From a449857542ecb24b718acfd632447a97a3821042 Mon Sep 17 00:00:00 2001 From: Victor Seva Date: Wed, 17 May 2023 16:34:52 +0200 Subject: [PATCH] app_python3: clang-format for coherent indentation and coding style --- src/modules/app_python3/app_python3_mod.c | 228 ++- src/modules/app_python3/app_python3_mod.h | 2 +- src/modules/app_python3/apy_kemi.c | 321 ++--- src/modules/app_python3/apy_kemi.h | 4 +- src/modules/app_python3/apy_kemi_export.c | 1547 +++++++-------------- src/modules/app_python3/apy_kemi_export.h | 5 +- src/modules/app_python3/mod_Core.c | 22 +- src/modules/app_python3/mod_Core.h | 4 +- src/modules/app_python3/mod_Logger.c | 85 +- src/modules/app_python3/mod_Logger.h | 4 +- src/modules/app_python3/mod_Ranks.c | 29 +- src/modules/app_python3/mod_Ranks.h | 4 +- src/modules/app_python3/mod_Router.c | 46 +- src/modules/app_python3/mod_Router.h | 4 +- src/modules/app_python3/msgobj_struct.h | 8 +- src/modules/app_python3/python_exec.c | 42 +- src/modules/app_python3/python_exec.h | 5 +- src/modules/app_python3/python_iface.c | 4 +- src/modules/app_python3/python_iface.h | 2 +- src/modules/app_python3/python_msgobj.c | 253 ++-- src/modules/app_python3/python_msgobj.h | 2 +- src/modules/app_python3/python_support.c | 128 +- src/modules/app_python3/python_support.h | 2 +- 23 files changed, 1095 insertions(+), 1656 deletions(-) diff --git a/src/modules/app_python3/app_python3_mod.c b/src/modules/app_python3/app_python3_mod.c index 376d1c13120..45dde5268c4 100644 --- a/src/modules/app_python3/app_python3_mod.c +++ b/src/modules/app_python3/app_python3_mod.c @@ -62,37 +62,33 @@ int _apy_process_rank = 0; PyThreadState *myThreadState; /** module parameters */ -static param_export_t params[]={ - {"script_name", PARAM_STR, &_sr_python_load_file }, - {"load", PARAM_STR, &_sr_python_load_file }, - {"mod_init_function", PARAM_STR, &mod_init_fname }, - {"child_init_method", PARAM_STR, &child_init_mname }, - {0,0,0} -}; +static param_export_t params[] = { + {"script_name", PARAM_STR, &_sr_python_load_file}, + {"load", PARAM_STR, &_sr_python_load_file}, + {"mod_init_function", PARAM_STR, &mod_init_fname}, + {"child_init_method", PARAM_STR, &child_init_mname}, {0, 0, 0}}; /* * Exported functions */ -static cmd_export_t cmds[] = { - { "python_exec", (cmd_function)python_exec1, 1, fixup_spve_null, - 0, ANY_ROUTE }, - { "python_exec", (cmd_function)python_exec2, 2, fixup_spve_spve, - 0, ANY_ROUTE }, - { 0, 0, 0, 0, 0, 0 } -}; +static cmd_export_t cmds[] = {{"python_exec", (cmd_function)python_exec1, 1, + fixup_spve_null, 0, ANY_ROUTE}, + {"python_exec", (cmd_function)python_exec2, 2, fixup_spve_spve, 0, + ANY_ROUTE}, + {0, 0, 0, 0, 0, 0}}; /** module exports */ struct module_exports exports = { - "app_python3", /* module name */ - RTLD_NOW | RTLD_GLOBAL, /* dlopen flags */ - cmds, /* exported functions */ - params, /* exported parameters */ - 0, /* exported rpc functions */ - 0, /* exported pseudo-variables */ - 0, /* response handling function */ - mod_init, /* module init function */ - child_init, /* per-child init function */ - mod_destroy /* destroy function */ + "app_python3", /* module name */ + RTLD_NOW | RTLD_GLOBAL, /* dlopen flags */ + cmds, /* exported functions */ + params, /* exported parameters */ + 0, /* exported rpc functions */ + 0, /* exported pseudo-variables */ + 0, /* response handling function */ + mod_init, /* module init function */ + child_init, /* per-child init function */ + mod_destroy /* destroy function */ }; @@ -110,11 +106,11 @@ static int mod_init(void) */ ksr_module_set_flag(KSRMOD_FLAG_POSTCHILDINIT); - if (apy_sr_init_mod()<0) { + if(apy_sr_init_mod() < 0) { LM_ERR("failed to init the sr mod\n"); return -1; } - if(app_python_init_rpc()<0) { + if(app_python_init_rpc() < 0) { LM_ERR("failed to register RPC commands\n"); return -1; } @@ -122,25 +118,26 @@ static int mod_init(void) dname_src = as_asciiz(&_sr_python_load_file); bname_src = as_asciiz(&_sr_python_load_file); - if(dname_src==NULL || bname_src==NULL) - { + if(dname_src == NULL || bname_src == NULL) { LM_ERR("no more pkg memory\n"); - if(dname_src) pkg_free(dname_src); - if(bname_src) pkg_free(bname_src); + if(dname_src) + pkg_free(dname_src); + if(bname_src) + pkg_free(bname_src); return -1; } dname = strdup(dirname(dname_src)); - if(dname==NULL) { + if(dname == NULL) { LM_ERR("no more system memory\n"); pkg_free(dname_src); pkg_free(bname_src); return -1; } - if (strlen(dname) == 0) { + if(strlen(dname) == 0) { free(dname); dname = malloc(2); - if(dname==NULL) { + if(dname == NULL) { LM_ERR("no more system memory\n"); pkg_free(dname_src); pkg_free(bname_src); @@ -151,9 +148,9 @@ static int mod_init(void) } bname = strdup(basename(bname_src)); i = strlen(bname); - if (bname[i - 1] == 'c' || bname[i - 1] == 'o') + if(bname[i - 1] == 'c' || bname[i - 1] == 'o') i -= 1; - if (bname[i - 3] == '.' && bname[i - 2] == 'p' && bname[i - 1] == 'y') { + if(bname[i - 3] == '.' && bname[i - 2] == 'p' && bname[i - 1] == 'y') { bname[i - 3] = '\0'; } else { LM_ERR("%s: script_name doesn't look like a python script\n", @@ -163,7 +160,7 @@ static int mod_init(void) return -1; } - if(apy_load_script()<0) { + if(apy_load_script() < 0) { pkg_free(dname_src); pkg_free(bname_src); LM_ERR("failed to load python script\n"); @@ -180,37 +177,37 @@ static int mod_init(void) */ static int child_init(int rank) { - if(rank==PROC_INIT) { + if(rank == PROC_INIT) { /* * this is called before any process is forked * so the Python internal state handler * should be called now. */ #if PY_VERSION_HEX >= 0x03070000 - PyOS_BeforeFork() ; + PyOS_BeforeFork(); #endif return 0; } - if(rank==PROC_POSTCHILDINIT) { + if(rank == PROC_POSTCHILDINIT) { /* * this is called after forking of all child * processes */ #if PY_VERSION_HEX >= 0x03070000 - PyOS_AfterFork_Parent() ; + PyOS_AfterFork_Parent(); #endif return 0; } _apy_process_rank = rank; - if (!_ksr_is_main) { + if(!_ksr_is_main) { #if PY_VERSION_HEX >= 0x03070000 PyOS_AfterFork_Child(); #else PyOS_AfterFork(); #endif } - if (cfg_child_init()) { + if(cfg_child_init()) { return -1; } return apy_init_script(rank); @@ -221,10 +218,10 @@ static int child_init(int rank) */ static void mod_destroy(void) { - if (dname) - free(dname); // dname was strdup'ed - if (bname) - free(bname); // bname was strdup'ed + if(dname) + free(dname); // dname was strdup'ed + if(bname) + free(bname); // bname was strdup'ed destroy_mod_Core(); destroy_mod_Ranks(); @@ -235,7 +232,7 @@ static void mod_destroy(void) #define PY_GIL_ENSURE gstate = PyGILState_Ensure() #define PY_GIL_RELEASE PyGILState_Release(gstate) -int apy_mod_init(PyObject* pModule) +int apy_mod_init(PyObject *pModule) { /* @@ -250,19 +247,19 @@ int apy_mod_init(PyObject* pModule) /* pFunc is a new reference */ - if (pFunc == NULL) { - if (!PyErr_Occurred()) + if(pFunc == NULL) { + if(!PyErr_Occurred()) PyErr_Format(PyExc_AttributeError, - "'module' object '%s' has no attribute '%s'", - bname, mod_init_fname.s); + "'module' object '%s' has no attribute '%s'", bname, + mod_init_fname.s); python_handle_exception("mod_init"); Py_DECREF(format_exc_obj); Py_XDECREF(pFunc); goto err; } - if (!PyCallable_Check(pFunc)) { - if (!PyErr_Occurred()) + if(!PyCallable_Check(pFunc)) { + if(!PyErr_Occurred()) PyErr_Format(PyExc_AttributeError, "module object '%s' has is not callable attribute '%s'", bname, mod_init_fname.s); @@ -274,7 +271,7 @@ int apy_mod_init(PyObject* pModule) pArgs = PyTuple_New(0); - if (pArgs == NULL) { + if(pArgs == NULL) { python_handle_exception("mod_init"); Py_DECREF(format_exc_obj); Py_DECREF(pFunc); @@ -286,26 +283,27 @@ int apy_mod_init(PyObject* pModule) Py_XDECREF(pFunc); Py_XDECREF(pArgs); - if (pHandler == Py_None) { - if (!PyErr_Occurred()) + if(pHandler == Py_None) { + if(!PyErr_Occurred()) PyErr_Format(PyExc_TypeError, "Function '%s' of module '%s' has returned None." - " Should be a class instance.", mod_init_fname.s, bname); + " Should be a class instance.", + mod_init_fname.s, bname); python_handle_exception("mod_init"); Py_DECREF(format_exc_obj); goto err; } - if (PyErr_Occurred()) { + if(PyErr_Occurred()) { python_handle_exception("mod_init"); Py_XDECREF(_sr_apy_handler_obj); Py_DECREF(format_exc_obj); goto err; } - if (pHandler == NULL) { + if(pHandler == NULL) { LM_ERR("PyObject_CallObject() returned NULL but no exception!\n"); - if (!PyErr_Occurred()) + if(!PyErr_Occurred()) PyErr_Format(PyExc_TypeError, "Function '%s' of module '%s' has returned not returned" " object. Should be a class instance.", @@ -317,7 +315,7 @@ int apy_mod_init(PyObject* pModule) Py_XDECREF(_sr_apy_handler_obj); _sr_apy_handler_obj = pHandler; rval = 0; - err: +err: PY_GIL_RELEASE; return rval; } @@ -335,14 +333,14 @@ int apy_reload_script(void) PY_GIL_ENSURE; PyObject *pModule = PyImport_ReloadModule(_sr_apy_module); - if (!pModule) { - if (!PyErr_Occurred()) + if(!pModule) { + if(!PyErr_Occurred()) PyErr_Format(PyExc_ImportError, "Reload module '%s'", bname); python_handle_exception("mod_init"); Py_DECREF(format_exc_obj); goto err; } - if (apy_mod_init(pModule)) { + if(apy_mod_init(pModule)) { LM_ERR("Error calling mod_init on reload\n"); Py_DECREF(pModule); goto err; @@ -350,17 +348,17 @@ int apy_reload_script(void) Py_DECREF(_sr_apy_module); _sr_apy_module = pModule; - if(apy_init_script(_apy_process_rank)<0) { - LM_ERR("failed to init script\n"); + if(apy_init_script(_apy_process_rank) < 0) { + LM_ERR("failed to init script\n"); goto err; - } - rval = 0; - err: + } + rval = 0; +err: PY_GIL_RELEASE; return rval; } -#define INTERNAL_VERSION "1002\n" +#define INTERNAL_VERSION "1002\n" int apy_load_script(void) { @@ -368,7 +366,7 @@ int apy_load_script(void) PyGILState_STATE gstate; int rc, rval = -1; - if (ap_init_modules() != 0) { + if(ap_init_modules() != 0) { return -1; } @@ -385,32 +383,30 @@ int apy_load_script(void) // import Router.Logger rc = PyRun_SimpleString("import sys\n" - "import Router\n" - "import KSR\n" - "KSR.__version__ = " INTERNAL_VERSION - "sys.modules['Router.Core'] = Router.Core\n" - "sys.modules['Router.Logger'] = Router.Logger\n" - "sys.modules['Router.Ranks'] = Router.Ranks\n" - "sys.modules['KSR.pv'] = KSR.pv\n" - "sys.modules['KSR.x'] = KSR.x\n" - ); - if (rc) { + "import Router\n" + "import KSR\n" + "KSR.__version__ = " INTERNAL_VERSION + "sys.modules['Router.Core'] = Router.Core\n" + "sys.modules['Router.Logger'] = Router.Logger\n" + "sys.modules['Router.Ranks'] = Router.Ranks\n" + "sys.modules['KSR.pv'] = KSR.pv\n" + "sys.modules['KSR.x'] = KSR.x\n"); + if(rc) { LM_ERR("Early imports of modules failed\n"); goto err; } format_exc_obj = InitTracebackModule(); - if (format_exc_obj == NULL || !PyCallable_Check(format_exc_obj)) - { + if(format_exc_obj == NULL || !PyCallable_Check(format_exc_obj)) { Py_XDECREF(format_exc_obj); goto err; } sys_path = PySys_GetObject("path"); /* PySys_GetObject doesn't pass reference! No need to DEREF */ - if (sys_path == NULL) { - if (!PyErr_Occurred()) + if(sys_path == NULL) { + if(!PyErr_Occurred()) PyErr_Format(PyExc_AttributeError, "'module' object 'sys' has no attribute 'path'"); python_handle_exception("mod_init"); @@ -419,10 +415,10 @@ int apy_load_script(void) } pDir = PyUnicode_FromString(dname); - if (pDir == NULL) { - if (!PyErr_Occurred()) - PyErr_Format(PyExc_AttributeError, - "PyUnicode_FromString() has failed"); + if(pDir == NULL) { + if(!PyErr_Occurred()) + PyErr_Format( + PyExc_AttributeError, "PyUnicode_FromString() has failed"); python_handle_exception("mod_init"); Py_DECREF(format_exc_obj); goto err; @@ -431,24 +427,24 @@ int apy_load_script(void) PyList_Insert(sys_path, 0, pDir); Py_DECREF(pDir); - if (python_msgobj_init() != 0) { - if (!PyErr_Occurred()) - PyErr_SetString(PyExc_AttributeError, - "python_msgobj_init() has failed"); + if(python_msgobj_init() != 0) { + if(!PyErr_Occurred()) + PyErr_SetString( + PyExc_AttributeError, "python_msgobj_init() has failed"); python_handle_exception("mod_init"); Py_DECREF(format_exc_obj); goto err; } pModule = PyImport_ImportModule(bname); - if (pModule == NULL) { - if (!PyErr_Occurred()) + if(pModule == NULL) { + if(!PyErr_Occurred()) PyErr_Format(PyExc_ImportError, "No module named '%s'", bname); python_handle_exception("mod_init"); Py_DECREF(format_exc_obj); goto err; } - if (apy_mod_init(pModule) != 0) { + if(apy_mod_init(pModule) != 0) { LM_ERR("Error calling mod_init\n"); Py_DECREF(pModule); goto err; @@ -456,7 +452,7 @@ int apy_load_script(void) _sr_apy_module = pModule; rval = 0; - err: +err: PY_GIL_RELEASE; return rval; } @@ -477,9 +473,8 @@ int apy_init_script(int rank) // get instance class name classname = get_instance_class_name(_sr_apy_handler_obj); - if (classname == NULL) - { - if (!PyErr_Occurred()) + if(classname == NULL) { + if(!PyErr_Occurred()) PyErr_Format(PyExc_AttributeError, "'module' instance has no class name"); python_handle_exception("child_init"); @@ -489,15 +484,15 @@ int apy_init_script(int rank) pFunc = PyObject_GetAttrString(_sr_apy_handler_obj, child_init_mname.s); - if (pFunc == NULL) { + if(pFunc == NULL) { python_handle_exception("child_init"); Py_XDECREF(pFunc); Py_DECREF(format_exc_obj); goto err; } - if (!PyCallable_Check(pFunc)) { - if (!PyErr_Occurred()) + if(!PyCallable_Check(pFunc)) { + if(!PyErr_Occurred()) PyErr_Format(PyExc_AttributeError, "class object '%s' has is not callable attribute '%s'", classname, mod_init_fname.s); @@ -508,7 +503,7 @@ int apy_init_script(int rank) } pArgs = PyTuple_New(1); - if (pArgs == NULL) { + if(pArgs == NULL) { python_handle_exception("child_init"); Py_DECREF(format_exc_obj); Py_DECREF(pFunc); @@ -516,7 +511,7 @@ int apy_init_script(int rank) } pValue = PyLong_FromLong((long)rank); - if (pValue == NULL) { + if(pValue == NULL) { python_handle_exception("child_init"); Py_DECREF(format_exc_obj); Py_DECREF(pArgs); @@ -530,21 +525,20 @@ int apy_init_script(int rank) Py_DECREF(pFunc); Py_DECREF(pArgs); - if (PyErr_Occurred()) { + if(PyErr_Occurred()) { python_handle_exception("child_init"); Py_DECREF(format_exc_obj); Py_XDECREF(pResult); goto err; } - if (pResult == NULL) { + if(pResult == NULL) { LM_ERR("PyObject_CallObject() returned NULL but no exception!\n"); goto err; } - if (!PyLong_Check(pResult)) - { - if (!PyErr_Occurred()) + if(!PyLong_Check(pResult)) { + if(!PyErr_Occurred()) PyErr_Format(PyExc_TypeError, "method '%s' of class '%s' should return 'int' type", child_init_mname.s, classname); @@ -556,7 +550,7 @@ int apy_init_script(int rank) rval = PyLong_AsLong(pResult); Py_DECREF(pResult); - err: +err: PY_GIL_RELEASE; return rval; } @@ -565,11 +559,11 @@ int apy_init_script(int rank) */ static int ki_app_python_exec(sip_msg_t *msg, str *method) { - if(method==NULL || method->s==NULL || method->len<=0) { + if(method == NULL || method->s == NULL || method->len <= 0) { LM_ERR("invalid method name\n"); return -1; } - if(method->s[method->len]!='\0') { + if(method->s[method->len] != '\0') { LM_ERR("invalid terminated method name\n"); return -1; } @@ -581,19 +575,19 @@ static int ki_app_python_exec(sip_msg_t *msg, str *method) */ static int ki_app_python_exec_p1(sip_msg_t *msg, str *method, str *p1) { - if(method==NULL || method->s==NULL || method->len<=0) { + if(method == NULL || method->s == NULL || method->len <= 0) { LM_ERR("invalid method name\n"); return -1; } - if(method->s[method->len]!='\0') { + if(method->s[method->len] != '\0') { LM_ERR("invalid terminated method name\n"); return -1; } - if(p1==NULL || p1->s==NULL || p1->len<0) { + if(p1 == NULL || p1->s == NULL || p1->len < 0) { LM_ERR("invalid p1 value\n"); return -1; } - if(p1->s[p1->len]!='\0') { + if(p1->s[p1->len] != '\0') { LM_ERR("invalid terminated p1 value\n"); return -1; } diff --git a/src/modules/app_python3/app_python3_mod.h b/src/modules/app_python3/app_python3_mod.h index b0110361729..fb5525790f6 100644 --- a/src/modules/app_python3/app_python3_mod.h +++ b/src/modules/app_python3/app_python3_mod.h @@ -20,7 +20,7 @@ */ #ifndef _APP_PYTHON3_MOD_H -#define _APP_PYTHON3_MOD_H +#define _APP_PYTHON3_MOD_H #include diff --git a/src/modules/app_python3/apy_kemi.c b/src/modules/app_python3/apy_kemi.c index c67f415aef8..a2ca3e0693d 100644 --- a/src/modules/app_python3/apy_kemi.c +++ b/src/modules/app_python3/apy_kemi.c @@ -44,7 +44,7 @@ int *_sr_python_reload_version = NULL; int _sr_python_local_version = 0; -gen_lock_t* _sr_python_reload_lock; +gen_lock_t *_sr_python_reload_lock; extern str _sr_python_load_file; extern int _apy_process_rank; @@ -52,65 +52,64 @@ int apy_reload_script(void); /** * */ -int sr_kemi_config_engine_python(sip_msg_t *msg, int rtype, str *rname, - str *rparam) +int sr_kemi_config_engine_python( + sip_msg_t *msg, int rtype, str *rname, str *rparam) { int ret; ret = -1; - if(rtype==REQUEST_ROUTE) { - if(rname!=NULL && rname->s!=NULL) { - ret = apy_exec(msg, rname->s, - (rparam && rparam->s)?rparam->s:NULL, 0); + if(rtype == REQUEST_ROUTE) { + if(rname != NULL && rname->s != NULL) { + ret = apy_exec( + msg, rname->s, (rparam && rparam->s) ? rparam->s : NULL, 0); } else { ret = apy_exec(msg, "ksr_request_route", NULL, 1); } - } else if(rtype==CORE_ONREPLY_ROUTE) { - if(kemi_reply_route_callback.len>0) { + } else if(rtype == CORE_ONREPLY_ROUTE) { + if(kemi_reply_route_callback.len > 0) { ret = apy_exec(msg, kemi_reply_route_callback.s, NULL, 0); } - } else if(rtype==BRANCH_ROUTE) { - if(rname!=NULL && rname->s!=NULL) { + } else if(rtype == BRANCH_ROUTE) { + if(rname != NULL && rname->s != NULL) { ret = apy_exec(msg, rname->s, NULL, 0); } - } else if(rtype==FAILURE_ROUTE) { - if(rname!=NULL && rname->s!=NULL) { + } else if(rtype == FAILURE_ROUTE) { + if(rname != NULL && rname->s != NULL) { ret = apy_exec(msg, rname->s, NULL, 0); } - } else if(rtype==BRANCH_FAILURE_ROUTE) { - if(rname!=NULL && rname->s!=NULL) { + } else if(rtype == BRANCH_FAILURE_ROUTE) { + if(rname != NULL && rname->s != NULL) { ret = apy_exec(msg, rname->s, NULL, 0); } - } else if(rtype==TM_ONREPLY_ROUTE) { - if(rname!=NULL && rname->s!=NULL) { + } else if(rtype == TM_ONREPLY_ROUTE) { + if(rname != NULL && rname->s != NULL) { ret = apy_exec(msg, rname->s, NULL, 0); } - } else if(rtype==ONSEND_ROUTE) { - if(kemi_onsend_route_callback.len>0) { + } else if(rtype == ONSEND_ROUTE) { + if(kemi_onsend_route_callback.len > 0) { ret = apy_exec(msg, kemi_onsend_route_callback.s, NULL, 0); } return 1; - } else if(rtype==EVENT_ROUTE) { - if(rname!=NULL && rname->s!=NULL) { - ret = apy_exec(msg, rname->s, - (rparam && rparam->s)?rparam->s:NULL, 0); + } else if(rtype == EVENT_ROUTE) { + if(rname != NULL && rname->s != NULL) { + ret = apy_exec( + msg, rname->s, (rparam && rparam->s) ? rparam->s : NULL, 0); } } else { - if(rname!=NULL) { - LM_ERR("route type %d with name [%.*s] not implemented\n", - rtype, rname->len, rname->s); + if(rname != NULL) { + LM_ERR("route type %d with name [%.*s] not implemented\n", rtype, + rname->len, rname->s); } else { - LM_ERR("route type %d with no name not implemented\n", - rtype); + LM_ERR("route type %d with no name not implemented\n", rtype); } } - if(rname!=NULL) { + if(rname != NULL) { LM_DBG("execution of route type %d with name [%.*s] returned %d\n", rtype, rname->len, rname->s, ret); } else { - LM_DBG("execution of route type %d with no name returned %d\n", - rtype, ret); + LM_DBG("execution of route type %d with no name returned %d\n", rtype, + ret); } return 1; @@ -148,8 +147,8 @@ PyObject *sr_apy_kemi_return_none(void) */ PyObject *sr_kemi_apy_return_int(sr_kemi_t *ket, int rval) { - if(ket!=NULL && ket->rtype==SR_KEMIP_BOOL) { - if(rval==SR_KEMI_TRUE) { + if(ket != NULL && ket->rtype == SR_KEMIP_BOOL) { + if(rval == SR_KEMI_TRUE) { return sr_kemi_apy_return_true(); } else { return sr_kemi_apy_return_false(); @@ -189,7 +188,7 @@ PyObject *sr_kemi_apy_return_xval(sr_kemi_t *ket, sr_kemi_xval_t *rx) case SR_KEMIP_STR: return sr_apy_kemi_return_str(ket, rx->v.s.s, rx->v.s.len); case SR_KEMIP_BOOL: - if(rx->v.n!=SR_KEMI_FALSE) { + if(rx->v.n != SR_KEMI_FALSE) { return sr_kemi_apy_return_true(); } else { return sr_kemi_apy_return_false(); @@ -216,7 +215,8 @@ PyObject *sr_kemi_apy_return_xval(sr_kemi_t *ket, sr_kemi_xval_t *rx) /** * */ -PyObject *sr_apy_kemi_exec_func_ex(sr_kemi_t *ket, PyObject *self, PyObject *args, int idx) +PyObject *sr_apy_kemi_exec_func_ex( + sr_kemi_t *ket, PyObject *self, PyObject *args, int idx) { str fname; int i; @@ -231,27 +231,26 @@ PyObject *sr_apy_kemi_exec_func_ex(sr_kemi_t *ket, PyObject *self, PyObject *arg env_P = sr_apy_env_get(); - if(env_P==NULL) { + if(env_P == NULL) { LM_ERR("invalid Python environment attributes\n"); return sr_kemi_apy_return_false(); } - if(env_P->msg==NULL) { + if(env_P->msg == NULL) { lmsg = faked_msg_next(); } else { lmsg = env_P->msg; } - if(ket->mname.len>0) { + if(ket->mname.len > 0) { LM_DBG("execution of method: %.*s\n", ket->fname.len, ket->fname.s); } else { - LM_DBG("execution of method: %.*s.%.*s\n", - ket->mname.len, ket->mname.s, + LM_DBG("execution of method: %.*s.%.*s\n", ket->mname.len, ket->mname.s, ket->fname.len, ket->fname.s); } fname = ket->fname; - if(ket->ptypes[0]==SR_KEMIP_NONE) { - if(ket->rtype==SR_KEMIP_XVAL) { + if(ket->ptypes[0] == SR_KEMIP_NONE) { + if(ket->rtype == SR_KEMIP_XVAL) { xret = ((sr_kemi_xfm_f)(ket->func))(lmsg); return sr_kemi_apy_return_xval(ket, xret); } else { @@ -263,54 +262,55 @@ PyObject *sr_apy_kemi_exec_func_ex(sr_kemi_t *ket, PyObject *self, PyObject *arg if(!PyTuple_Check(args)) { LM_ERR("invalid arguments from Python\n"); return sr_kemi_apy_return_false(); - } - memset(vps, 0, SR_KEMI_PARAMS_MAX*sizeof(sr_kemi_xval_t)); + memset(vps, 0, SR_KEMI_PARAMS_MAX * sizeof(sr_kemi_xval_t)); alen = PyTuple_Size(args); LM_DBG("number of arguments: %d\n", (int)alen); - for(i=0; iptypes[i]==SR_KEMIP_NONE) { + for(i = 0; i < SR_KEMI_PARAMS_MAX; i++) { + if(ket->ptypes[i] == SR_KEMIP_NONE) { break; } - if(i>=alen) { - LM_ERR("invalid number of parameters - idx: %d argc: %d\n", i, (int)alen); + if(i >= alen) { + LM_ERR("invalid number of parameters - idx: %d argc: %d\n", i, + (int)alen); return sr_kemi_apy_return_false(); } pobj = PyTuple_GetItem(args, i); - if(pobj==NULL) { - LM_ERR("null parameter - func: %.*s idx: %d argc: %d\n", - fname.len, fname.s, i, (int)alen); + if(pobj == NULL) { + LM_ERR("null parameter - func: %.*s idx: %d argc: %d\n", fname.len, + fname.s, i, (int)alen); return sr_kemi_apy_return_false(); } - if(ket->ptypes[i]==SR_KEMIP_STR) { + if(ket->ptypes[i] == SR_KEMIP_STR) { if(!PyUnicode_Check(pobj)) { LM_ERR("non-string parameter - func: %.*s idx: %d argc: %d\n", fname.len, fname.s, i, (int)alen); return sr_kemi_apy_return_false(); } - vps[i].v.s.s = (char*)PyUnicode_AsUTF8AndSize(pobj, &slen); - if(vps[i].v.s.s==NULL) { + vps[i].v.s.s = (char *)PyUnicode_AsUTF8AndSize(pobj, &slen); + if(vps[i].v.s.s == NULL) { LM_ERR("null-string parameter - func: %.*s idx: %d argc: %d\n", fname.len, fname.s, i, (int)alen); return sr_kemi_apy_return_false(); } vps[i].v.s.len = (int)slen; vps[i].vtype = SR_KEMIP_STR; - } else if((ket->ptypes[i]==SR_KEMIP_INT) || (ket->ptypes[i]==SR_KEMIP_LONG)) { + } else if((ket->ptypes[i] == SR_KEMIP_INT) + || (ket->ptypes[i] == SR_KEMIP_LONG)) { if(PyLong_Check(pobj)) { vps[i].v.l = PyLong_AsLong(pobj); - } else if(pobj==Py_True) { + } else if(pobj == Py_True) { vps[i].v.l = 1; - } else if(pobj==Py_False) { + } else if(pobj == Py_False) { vps[i].v.l = 0; } else { LM_ERR("non-number parameter - func: %.*s idx: %d argc: %d\n", fname.len, fname.s, i, (int)alen); return sr_kemi_apy_return_false(); } - if(ket->ptypes[i]==SR_KEMIP_INT) { + if(ket->ptypes[i] == SR_KEMIP_INT) { vps[i].vtype = SR_KEMIP_INT; ret = (int)vps[i].v.l; vps[i].v.n = ret; @@ -345,24 +345,24 @@ PyObject *sr_apy_kemi_exec_func(PyObject *self, PyObject *args, int idx) unsigned int tdiff; ket = sr_apy_kemi_export_get(idx); - if(ket==NULL) { + if(ket == NULL) { return sr_kemi_apy_return_false(); } - if(unlikely(cfg_get(core, core_cfg, latency_limit_action)>0) + if(unlikely(cfg_get(core, core_cfg, latency_limit_action) > 0) && is_printable(cfg_get(core, core_cfg, latency_log))) { gettimeofday(&tvb, &tz); } ret = sr_apy_kemi_exec_func_ex(ket, self, args, idx); - if(unlikely(cfg_get(core, core_cfg, latency_limit_action)>0) + if(unlikely(cfg_get(core, core_cfg, latency_limit_action) > 0) && is_printable(cfg_get(core, core_cfg, latency_log))) { gettimeofday(&tve, &tz); tdiff = (tve.tv_sec - tvb.tv_sec) * 1000000 - + (tve.tv_usec - tvb.tv_usec); + + (tve.tv_usec - tvb.tv_usec); if(tdiff >= cfg_get(core, core_cfg, latency_limit_action)) { pstate = PyThreadState_GET(); - if (pstate != NULL) { + if(pstate != NULL) { #if PY_VERSION_HEX >= 0x030B0000 pframe = PyThreadState_GetFrame(pstate); if(pframe != NULL) { @@ -377,20 +377,26 @@ PyObject *sr_apy_kemi_exec_func(PyObject *self, PyObject *args, int idx) LOG(cfg_get(core, core_cfg, latency_log), "alert - action KSR.%s%s%s(...)" " took too long [%u ms] (file:%s func:%s line:%d)\n", - (ket->mname.len>0)?ket->mname.s:"", - (ket->mname.len>0)?".":"", ket->fname.s, tdiff, - (pcode)?PyBytes_AsString(pcode->co_filename):"", - (pcode)?PyBytes_AsString(pcode->co_name):"", - (pframe)?PyFrame_GetLineNumber(pframe):0); + (ket->mname.len > 0) ? ket->mname.s : "", + (ket->mname.len > 0) ? "." : "", ket->fname.s, tdiff, + (pcode) ? PyBytes_AsString(pcode->co_filename) : "", + (pcode) ? PyBytes_AsString(pcode->co_name) : "", + (pframe) ? PyFrame_GetLineNumber(pframe) : 0); #else LOG(cfg_get(core, core_cfg, latency_log), "alert - action KSR.%s%s%s(...)" " took too long [%u ms] (file:%s func:%s line:%d)\n", - (ket->mname.len>0)?ket->mname.s:"", - (ket->mname.len>0)?".":"", ket->fname.s, tdiff, - (pframe && pframe->f_code)?PyBytes_AsString(pframe->f_code->co_filename):"", - (pframe && pframe->f_code)?PyBytes_AsString(pframe->f_code->co_name):"", - (pframe && pframe->f_code)?PyCode_Addr2Line(pframe->f_code, pframe->f_lasti):0); + (ket->mname.len > 0) ? ket->mname.s : "", + (ket->mname.len > 0) ? "." : "", ket->fname.s, tdiff, + (pframe && pframe->f_code) + ? PyBytes_AsString(pframe->f_code->co_filename) + : "", + (pframe && pframe->f_code) + ? PyBytes_AsString(pframe->f_code->co_name) + : "", + (pframe && pframe->f_code) + ? PyCode_Addr2Line(pframe->f_code, pframe->f_lasti) + : 0); #endif } } @@ -405,15 +411,16 @@ PyObject *_sr_apy_ksr_module = NULL; PyObject **_sr_apy_ksr_modules_list = NULL; PyMethodDef *_sr_KSRMethods = NULL; -#define SR_APY_KSR_MODULES_SIZE 256 -#define SR_APY_KSR_METHODS_SIZE (SR_APY_KEMI_EXPORT_SIZE + SR_APY_KSR_MODULES_SIZE) +#define SR_APY_KSR_MODULES_SIZE 256 +#define SR_APY_KSR_METHODS_SIZE \ + (SR_APY_KEMI_EXPORT_SIZE + SR_APY_KSR_MODULES_SIZE) /** * */ static int sr_apy_kemi_f_ktest(sip_msg_t *msg, str *txt) { - if(txt!=NULL && txt->s!=NULL) + if(txt != NULL && txt->s != NULL) LM_DBG("%.*s", txt->len, txt->s); return 0; } @@ -434,49 +441,31 @@ static sr_kemi_t _sr_apy_kemi_test[] = { /* clang-format on */ static struct PyModuleDef KSR_moduledef = { - PyModuleDef_HEAD_INIT, - "KSR", - NULL, - -1, - NULL, - NULL, - NULL, - NULL, - NULL -}; + PyModuleDef_HEAD_INIT, "KSR", NULL, -1, NULL, NULL, NULL, NULL, NULL}; /** * */ static PyMethodDef _sr_apy_kemi_x_Methods[] = { - {"modf", (PyCFunction)msg_call_function, METH_VARARGS, - "Invoke function exported by the other module."}, - {NULL, NULL, 0, NULL} /* sentinel */ + {"modf", (PyCFunction)msg_call_function, METH_VARARGS, + "Invoke function exported by the other module."}, + {NULL, NULL, 0, NULL} /* sentinel */ }; -static struct PyModuleDef KSR_x_moduledef = { - PyModuleDef_HEAD_INIT, - "KSR.x", - NULL, - -1, - _sr_apy_kemi_x_Methods, - NULL, - NULL, - NULL, - NULL -}; +static struct PyModuleDef KSR_x_moduledef = {PyModuleDef_HEAD_INIT, "KSR.x", + NULL, -1, _sr_apy_kemi_x_Methods, NULL, NULL, NULL, NULL}; /* forward */ -static PyObject* init_KSR(void); -int sr_apy_init_ksr(void) { +static PyObject *init_KSR(void); +int sr_apy_init_ksr(void) +{ PyImport_AppendInittab("KSR", &init_KSR); return 0; } /** * */ -static -PyObject* init_KSR(void) +static PyObject *init_KSR(void) { PyMethodDef *_sr_crt_KSRMethods = NULL; sr_kemi_module_t *emods = NULL; @@ -488,44 +477,47 @@ PyObject* init_KSR(void) char mname[128]; /* init faked sip msg */ - if(faked_msg_init()<0) - { + if(faked_msg_init() < 0) { LM_ERR("failed to init local faked sip msg\n"); return NULL; } _sr_KSRMethods = malloc(SR_APY_KSR_METHODS_SIZE * sizeof(PyMethodDef)); - if(_sr_KSRMethods==NULL) { + if(_sr_KSRMethods == NULL) { LM_ERR("no more pkg memory\n"); return NULL; } - _sr_apy_ksr_modules_list = malloc(SR_APY_KSR_MODULES_SIZE * sizeof(PyObject*)); - if(_sr_apy_ksr_modules_list==NULL) { + _sr_apy_ksr_modules_list = + malloc(SR_APY_KSR_MODULES_SIZE * sizeof(PyObject *)); + if(_sr_apy_ksr_modules_list == NULL) { LM_ERR("no more pkg memory\n"); return NULL; } memset(_sr_KSRMethods, 0, SR_APY_KSR_METHODS_SIZE * sizeof(PyMethodDef)); - memset(_sr_apy_ksr_modules_list, 0, SR_APY_KSR_MODULES_SIZE * sizeof(PyObject*)); + memset(_sr_apy_ksr_modules_list, 0, + SR_APY_KSR_MODULES_SIZE * sizeof(PyObject *)); emods_size = sr_kemi_modules_size_get(); emods = sr_kemi_modules_get(); n = 0; _sr_crt_KSRMethods = _sr_KSRMethods; - if(emods_size==0 || emods[0].kexp==NULL) { + if(emods_size == 0 || emods[0].kexp == NULL) { LM_DBG("exporting KSR.%s(...)\n", _sr_apy_kemi_test[0].fname.s); _sr_crt_KSRMethods[0].ml_name = _sr_apy_kemi_test[0].fname.s; - _sr_crt_KSRMethods[0].ml_meth = sr_apy_kemi_export_associate(&_sr_apy_kemi_test[0]); + _sr_crt_KSRMethods[0].ml_meth = + sr_apy_kemi_export_associate(&_sr_apy_kemi_test[0]); _sr_crt_KSRMethods[0].ml_flags = METH_VARARGS; _sr_crt_KSRMethods[0].ml_doc = NAME " exported function"; } else { - for(i=0; emods[0].kexp[i].func!=NULL; i++) { + for(i = 0; emods[0].kexp[i].func != NULL; i++) { LM_DBG("exporting KSR.%s(...)\n", emods[0].kexp[i].fname.s); _sr_crt_KSRMethods[i].ml_name = emods[0].kexp[i].fname.s; _sr_crt_KSRMethods[i].ml_meth = - sr_apy_kemi_export_associate(&emods[0].kexp[i]); + sr_apy_kemi_export_associate(&emods[0].kexp[i]); if(_sr_crt_KSRMethods[i].ml_meth == NULL) { - LM_ERR("failed to associate kemi function with python export\n"); + LM_ERR("failed to associate kemi function with python " + "export\n"); free(_sr_KSRMethods); _sr_KSRMethods = NULL; return NULL; @@ -549,19 +541,20 @@ PyObject* init_KSR(void) Py_INCREF(_sr_apy_ksr_modules_list[m]); m++; - if(emods_size>1) { - for(k=1; k 1) { + for(k = 1; k < emods_size; k++) { n++; _sr_crt_KSRMethods = _sr_KSRMethods + n; snprintf(mname, 128, "KSR.%s", emods[k].kexp[0].mname.s); - for(i=0; emods[k].kexp[i].func!=NULL; i++) { + for(i = 0; emods[k].kexp[i].func != NULL; i++) { LM_DBG("exporting %s.%s(...)\n", mname, emods[k].kexp[i].fname.s); _sr_crt_KSRMethods[i].ml_name = emods[k].kexp[i].fname.s; _sr_crt_KSRMethods[i].ml_meth = - sr_apy_kemi_export_associate(&emods[k].kexp[i]); + sr_apy_kemi_export_associate(&emods[k].kexp[i]); if(_sr_crt_KSRMethods[i].ml_meth == NULL) { - LM_ERR("failed to associate kemi function with python export\n"); + LM_ERR("failed to associate kemi function with python " + "export\n"); free(_sr_KSRMethods); _sr_KSRMethods = NULL; return NULL; @@ -573,14 +566,15 @@ PyObject* init_KSR(void) LM_DBG("initializing kemi sub-module: %s (%s)\n", mname, emods[k].kexp[0].mname.s); - PyModuleDef *mmodule = malloc(sizeof(PyModuleDef)); + PyModuleDef *mmodule = malloc(sizeof(PyModuleDef)); memset(mmodule, 0, sizeof(PyModuleDef)); mmodule->m_name = strndup(mname, 127); mmodule->m_methods = _sr_crt_KSRMethods; mmodule->m_size = -1; _sr_apy_ksr_modules_list[m] = PyModule_Create(mmodule); - PyModule_AddObject(_sr_apy_ksr_module, emods[k].kexp[0].mname.s, _sr_apy_ksr_modules_list[m]); + PyModule_AddObject(_sr_apy_ksr_module, emods[k].kexp[0].mname.s, + _sr_apy_ksr_modules_list[m]); Py_INCREF(_sr_apy_ksr_modules_list[m]); m++; } @@ -594,11 +588,11 @@ PyObject* init_KSR(void) */ void sr_apy_destroy_ksr(void) { - if(_sr_apy_ksr_module!=NULL) { + if(_sr_apy_ksr_module != NULL) { Py_XDECREF(_sr_apy_ksr_module); _sr_apy_ksr_module = NULL; } - if(_sr_KSRMethods!=NULL) { + if(_sr_KSRMethods != NULL) { free(_sr_KSRMethods); _sr_KSRMethods = NULL; } @@ -612,7 +606,7 @@ void sr_apy_destroy_ksr(void) int apy_sr_init_mod(void) { if(_sr_python_reload_version == NULL) { - _sr_python_reload_version = (int*)shm_malloc(sizeof(int)); + _sr_python_reload_version = (int *)shm_malloc(sizeof(int)); if(_sr_python_reload_version == NULL) { LM_ERR("failed to allocated reload version\n"); return -1; @@ -624,18 +618,15 @@ int apy_sr_init_mod(void) return 0; } -static const char* app_python_rpc_reload_doc[2] = { - "Reload python file", - 0 -}; +static const char *app_python_rpc_reload_doc[2] = {"Reload python file", 0}; -static void app_python_rpc_reload(rpc_t* rpc, void* ctx) +static void app_python_rpc_reload(rpc_t *rpc, void *ctx) { int v; void *vh; - if(_sr_python_load_file.s == NULL && _sr_python_load_file.len<=0) { + if(_sr_python_load_file.s == NULL && _sr_python_load_file.len <= 0) { LM_WARN("script file path not provided\n"); rpc->fault(ctx, 500, "No script file"); return; @@ -649,65 +640,59 @@ static void app_python_rpc_reload(rpc_t* rpc, void* ctx) _sr_python_local_version = v = *_sr_python_reload_version; *_sr_python_reload_version += 1; LM_INFO("marking for reload Python script file: %.*s (%d => %d)\n", - _sr_python_load_file.len, _sr_python_load_file.s, - v, - *_sr_python_reload_version); + _sr_python_load_file.len, _sr_python_load_file.s, v, + *_sr_python_reload_version); - if (rpc->add(ctx, "{", &vh) < 0) { + if(rpc->add(ctx, "{", &vh) < 0) { rpc->fault(ctx, 500, "Server error"); return; } - rpc->struct_add(vh, "dd", - "old", v, - "new", *_sr_python_reload_version); + rpc->struct_add(vh, "dd", "old", v, "new", *_sr_python_reload_version); return; } -static const char* app_python_rpc_api_list_doc[2] = { - "List kemi exports to javascript", - 0 -}; +static const char *app_python_rpc_api_list_doc[2] = { + "List kemi exports to javascript", 0}; -static void app_python_rpc_api_list(rpc_t* rpc, void* ctx) +static void app_python_rpc_api_list(rpc_t *rpc, void *ctx) { int i; int n; sr_kemi_t *ket; - void* th; - void* sh; - void* ih; + void *th; + void *sh; + void *ih; - if (rpc->add(ctx, "{", &th) < 0) { + if(rpc->add(ctx, "{", &th) < 0) { rpc->fault(ctx, 500, "Internal error root reply"); return; } n = 0; - for(i=0; istruct_add(th, "d[", - "msize", n, - "methods", &ih)<0) - { + if(rpc->struct_add(th, "d[", "msize", n, "methods", &ih) < 0) { rpc->fault(ctx, 500, "Internal error array structure"); return; } - for(i=0; istruct_add(ih, "{", "func", &sh)<0) { + if(ket == NULL) + continue; + if(rpc->struct_add(ih, "{", "func", &sh) < 0) { rpc->fault(ctx, 500, "Internal error internal structure"); return; } - if(rpc->struct_add(sh, "SSSS", - "ret", sr_kemi_param_map_get_name(ket->rtype), - "module", &ket->mname, - "name", &ket->fname, - "params", sr_kemi_param_map_get_params(ket->ptypes))<0) { + if(rpc->struct_add(sh, "SSSS", "ret", + sr_kemi_param_map_get_name(ket->rtype), "module", + &ket->mname, "name", &ket->fname, "params", + sr_kemi_param_map_get_params(ket->ptypes)) + < 0) { LM_ERR("failed to add the structure with attributes (%d)\n", i); rpc->fault(ctx, 500, "Internal error creating dest struct"); return; @@ -716,20 +701,18 @@ static void app_python_rpc_api_list(rpc_t* rpc, void* ctx) } rpc_export_t app_python_rpc_cmds[] = { - {"app_python.reload", app_python_rpc_reload, - app_python_rpc_reload_doc, 0}, - {"app_python.api_list", app_python_rpc_api_list, - app_python_rpc_api_list_doc, 0}, - {0, 0, 0, 0} -}; + {"app_python.reload", app_python_rpc_reload, app_python_rpc_reload_doc, + 0}, + {"app_python.api_list", app_python_rpc_api_list, + app_python_rpc_api_list_doc, 0}, + {0, 0, 0, 0}}; /** * register RPC commands */ int app_python_init_rpc(void) { - if (rpc_register_array(app_python_rpc_cmds)!=0) - { + if(rpc_register_array(app_python_rpc_cmds) != 0) { LM_ERR("failed to register RPC commands\n"); return -1; } diff --git a/src/modules/app_python3/apy_kemi.h b/src/modules/app_python3/apy_kemi.h index 6cb19cd5260..111738633c9 100644 --- a/src/modules/app_python3/apy_kemi.h +++ b/src/modules/app_python3/apy_kemi.h @@ -27,8 +27,8 @@ int sr_apy_init_ksr(void); void sr_apy_destroy_ksr(void); -int sr_kemi_config_engine_python(sip_msg_t *msg, int rtype, str *rname, - str *rparam); +int sr_kemi_config_engine_python( + sip_msg_t *msg, int rtype, str *rname, str *rparam); PyObject *sr_apy_kemi_exec_func(PyObject *self, PyObject *args, int idx); diff --git a/src/modules/app_python3/apy_kemi_export.c b/src/modules/app_python3/apy_kemi_export.c index fab078b68e9..45b3be7e233 100644 --- a/src/modules/app_python3/apy_kemi_export.c +++ b/src/modules/app_python3/apy_kemi_export.c @@ -8231,1039 +8231,526 @@ static PyObject *sr_apy_kemi_exec_func_1023(PyObject *self, PyObject *args) * */ static sr_apy_kemi_export_t _sr_apy_kemi_export_list[] = { - { sr_apy_kemi_exec_func_0, NULL}, - { sr_apy_kemi_exec_func_1, NULL}, - { sr_apy_kemi_exec_func_2, NULL}, - { sr_apy_kemi_exec_func_3, NULL}, - { sr_apy_kemi_exec_func_4, NULL}, - { sr_apy_kemi_exec_func_5, NULL}, - { sr_apy_kemi_exec_func_6, NULL}, - { sr_apy_kemi_exec_func_7, NULL}, - { sr_apy_kemi_exec_func_8, NULL}, - { sr_apy_kemi_exec_func_9, NULL}, - { sr_apy_kemi_exec_func_10, NULL}, - { sr_apy_kemi_exec_func_11, NULL}, - { sr_apy_kemi_exec_func_12, NULL}, - { sr_apy_kemi_exec_func_13, NULL}, - { sr_apy_kemi_exec_func_14, NULL}, - { sr_apy_kemi_exec_func_15, NULL}, - { sr_apy_kemi_exec_func_16, NULL}, - { sr_apy_kemi_exec_func_17, NULL}, - { sr_apy_kemi_exec_func_18, NULL}, - { sr_apy_kemi_exec_func_19, NULL}, - { sr_apy_kemi_exec_func_20, NULL}, - { sr_apy_kemi_exec_func_21, NULL}, - { sr_apy_kemi_exec_func_22, NULL}, - { sr_apy_kemi_exec_func_23, NULL}, - { sr_apy_kemi_exec_func_24, NULL}, - { sr_apy_kemi_exec_func_25, NULL}, - { sr_apy_kemi_exec_func_26, NULL}, - { sr_apy_kemi_exec_func_27, NULL}, - { sr_apy_kemi_exec_func_28, NULL}, - { sr_apy_kemi_exec_func_29, NULL}, - { sr_apy_kemi_exec_func_30, NULL}, - { sr_apy_kemi_exec_func_31, NULL}, - { sr_apy_kemi_exec_func_32, NULL}, - { sr_apy_kemi_exec_func_33, NULL}, - { sr_apy_kemi_exec_func_34, NULL}, - { sr_apy_kemi_exec_func_35, NULL}, - { sr_apy_kemi_exec_func_36, NULL}, - { sr_apy_kemi_exec_func_37, NULL}, - { sr_apy_kemi_exec_func_38, NULL}, - { sr_apy_kemi_exec_func_39, NULL}, - { sr_apy_kemi_exec_func_40, NULL}, - { sr_apy_kemi_exec_func_41, NULL}, - { sr_apy_kemi_exec_func_42, NULL}, - { sr_apy_kemi_exec_func_43, NULL}, - { sr_apy_kemi_exec_func_44, NULL}, - { sr_apy_kemi_exec_func_45, NULL}, - { sr_apy_kemi_exec_func_46, NULL}, - { sr_apy_kemi_exec_func_47, NULL}, - { sr_apy_kemi_exec_func_48, NULL}, - { sr_apy_kemi_exec_func_49, NULL}, - { sr_apy_kemi_exec_func_50, NULL}, - { sr_apy_kemi_exec_func_51, NULL}, - { sr_apy_kemi_exec_func_52, NULL}, - { sr_apy_kemi_exec_func_53, NULL}, - { sr_apy_kemi_exec_func_54, NULL}, - { sr_apy_kemi_exec_func_55, NULL}, - { sr_apy_kemi_exec_func_56, NULL}, - { sr_apy_kemi_exec_func_57, NULL}, - { sr_apy_kemi_exec_func_58, NULL}, - { sr_apy_kemi_exec_func_59, NULL}, - { sr_apy_kemi_exec_func_60, NULL}, - { sr_apy_kemi_exec_func_61, NULL}, - { sr_apy_kemi_exec_func_62, NULL}, - { sr_apy_kemi_exec_func_63, NULL}, - { sr_apy_kemi_exec_func_64, NULL}, - { sr_apy_kemi_exec_func_65, NULL}, - { sr_apy_kemi_exec_func_66, NULL}, - { sr_apy_kemi_exec_func_67, NULL}, - { sr_apy_kemi_exec_func_68, NULL}, - { sr_apy_kemi_exec_func_69, NULL}, - { sr_apy_kemi_exec_func_70, NULL}, - { sr_apy_kemi_exec_func_71, NULL}, - { sr_apy_kemi_exec_func_72, NULL}, - { sr_apy_kemi_exec_func_73, NULL}, - { sr_apy_kemi_exec_func_74, NULL}, - { sr_apy_kemi_exec_func_75, NULL}, - { sr_apy_kemi_exec_func_76, NULL}, - { sr_apy_kemi_exec_func_77, NULL}, - { sr_apy_kemi_exec_func_78, NULL}, - { sr_apy_kemi_exec_func_79, NULL}, - { sr_apy_kemi_exec_func_80, NULL}, - { sr_apy_kemi_exec_func_81, NULL}, - { sr_apy_kemi_exec_func_82, NULL}, - { sr_apy_kemi_exec_func_83, NULL}, - { sr_apy_kemi_exec_func_84, NULL}, - { sr_apy_kemi_exec_func_85, NULL}, - { sr_apy_kemi_exec_func_86, NULL}, - { sr_apy_kemi_exec_func_87, NULL}, - { sr_apy_kemi_exec_func_88, NULL}, - { sr_apy_kemi_exec_func_89, NULL}, - { sr_apy_kemi_exec_func_90, NULL}, - { sr_apy_kemi_exec_func_91, NULL}, - { sr_apy_kemi_exec_func_92, NULL}, - { sr_apy_kemi_exec_func_93, NULL}, - { sr_apy_kemi_exec_func_94, NULL}, - { sr_apy_kemi_exec_func_95, NULL}, - { sr_apy_kemi_exec_func_96, NULL}, - { sr_apy_kemi_exec_func_97, NULL}, - { sr_apy_kemi_exec_func_98, NULL}, - { sr_apy_kemi_exec_func_99, NULL}, - { sr_apy_kemi_exec_func_100, NULL}, - { sr_apy_kemi_exec_func_101, NULL}, - { sr_apy_kemi_exec_func_102, NULL}, - { sr_apy_kemi_exec_func_103, NULL}, - { sr_apy_kemi_exec_func_104, NULL}, - { sr_apy_kemi_exec_func_105, NULL}, - { sr_apy_kemi_exec_func_106, NULL}, - { sr_apy_kemi_exec_func_107, NULL}, - { sr_apy_kemi_exec_func_108, NULL}, - { sr_apy_kemi_exec_func_109, NULL}, - { sr_apy_kemi_exec_func_110, NULL}, - { sr_apy_kemi_exec_func_111, NULL}, - { sr_apy_kemi_exec_func_112, NULL}, - { sr_apy_kemi_exec_func_113, NULL}, - { sr_apy_kemi_exec_func_114, NULL}, - { sr_apy_kemi_exec_func_115, NULL}, - { sr_apy_kemi_exec_func_116, NULL}, - { sr_apy_kemi_exec_func_117, NULL}, - { sr_apy_kemi_exec_func_118, NULL}, - { sr_apy_kemi_exec_func_119, NULL}, - { sr_apy_kemi_exec_func_120, NULL}, - { sr_apy_kemi_exec_func_121, NULL}, - { sr_apy_kemi_exec_func_122, NULL}, - { sr_apy_kemi_exec_func_123, NULL}, - { sr_apy_kemi_exec_func_124, NULL}, - { sr_apy_kemi_exec_func_125, NULL}, - { sr_apy_kemi_exec_func_126, NULL}, - { sr_apy_kemi_exec_func_127, NULL}, - { sr_apy_kemi_exec_func_128, NULL}, - { sr_apy_kemi_exec_func_129, NULL}, - { sr_apy_kemi_exec_func_130, NULL}, - { sr_apy_kemi_exec_func_131, NULL}, - { sr_apy_kemi_exec_func_132, NULL}, - { sr_apy_kemi_exec_func_133, NULL}, - { sr_apy_kemi_exec_func_134, NULL}, - { sr_apy_kemi_exec_func_135, NULL}, - { sr_apy_kemi_exec_func_136, NULL}, - { sr_apy_kemi_exec_func_137, NULL}, - { sr_apy_kemi_exec_func_138, NULL}, - { sr_apy_kemi_exec_func_139, NULL}, - { sr_apy_kemi_exec_func_140, NULL}, - { sr_apy_kemi_exec_func_141, NULL}, - { sr_apy_kemi_exec_func_142, NULL}, - { sr_apy_kemi_exec_func_143, NULL}, - { sr_apy_kemi_exec_func_144, NULL}, - { sr_apy_kemi_exec_func_145, NULL}, - { sr_apy_kemi_exec_func_146, NULL}, - { sr_apy_kemi_exec_func_147, NULL}, - { sr_apy_kemi_exec_func_148, NULL}, - { sr_apy_kemi_exec_func_149, NULL}, - { sr_apy_kemi_exec_func_150, NULL}, - { sr_apy_kemi_exec_func_151, NULL}, - { sr_apy_kemi_exec_func_152, NULL}, - { sr_apy_kemi_exec_func_153, NULL}, - { sr_apy_kemi_exec_func_154, NULL}, - { sr_apy_kemi_exec_func_155, NULL}, - { sr_apy_kemi_exec_func_156, NULL}, - { sr_apy_kemi_exec_func_157, NULL}, - { sr_apy_kemi_exec_func_158, NULL}, - { sr_apy_kemi_exec_func_159, NULL}, - { sr_apy_kemi_exec_func_160, NULL}, - { sr_apy_kemi_exec_func_161, NULL}, - { sr_apy_kemi_exec_func_162, NULL}, - { sr_apy_kemi_exec_func_163, NULL}, - { sr_apy_kemi_exec_func_164, NULL}, - { sr_apy_kemi_exec_func_165, NULL}, - { sr_apy_kemi_exec_func_166, NULL}, - { sr_apy_kemi_exec_func_167, NULL}, - { sr_apy_kemi_exec_func_168, NULL}, - { sr_apy_kemi_exec_func_169, NULL}, - { sr_apy_kemi_exec_func_170, NULL}, - { sr_apy_kemi_exec_func_171, NULL}, - { sr_apy_kemi_exec_func_172, NULL}, - { sr_apy_kemi_exec_func_173, NULL}, - { sr_apy_kemi_exec_func_174, NULL}, - { sr_apy_kemi_exec_func_175, NULL}, - { sr_apy_kemi_exec_func_176, NULL}, - { sr_apy_kemi_exec_func_177, NULL}, - { sr_apy_kemi_exec_func_178, NULL}, - { sr_apy_kemi_exec_func_179, NULL}, - { sr_apy_kemi_exec_func_180, NULL}, - { sr_apy_kemi_exec_func_181, NULL}, - { sr_apy_kemi_exec_func_182, NULL}, - { sr_apy_kemi_exec_func_183, NULL}, - { sr_apy_kemi_exec_func_184, NULL}, - { sr_apy_kemi_exec_func_185, NULL}, - { sr_apy_kemi_exec_func_186, NULL}, - { sr_apy_kemi_exec_func_187, NULL}, - { sr_apy_kemi_exec_func_188, NULL}, - { sr_apy_kemi_exec_func_189, NULL}, - { sr_apy_kemi_exec_func_190, NULL}, - { sr_apy_kemi_exec_func_191, NULL}, - { sr_apy_kemi_exec_func_192, NULL}, - { sr_apy_kemi_exec_func_193, NULL}, - { sr_apy_kemi_exec_func_194, NULL}, - { sr_apy_kemi_exec_func_195, NULL}, - { sr_apy_kemi_exec_func_196, NULL}, - { sr_apy_kemi_exec_func_197, NULL}, - { sr_apy_kemi_exec_func_198, NULL}, - { sr_apy_kemi_exec_func_199, NULL}, - { sr_apy_kemi_exec_func_200, NULL}, - { sr_apy_kemi_exec_func_201, NULL}, - { sr_apy_kemi_exec_func_202, NULL}, - { sr_apy_kemi_exec_func_203, NULL}, - { sr_apy_kemi_exec_func_204, NULL}, - { sr_apy_kemi_exec_func_205, NULL}, - { sr_apy_kemi_exec_func_206, NULL}, - { sr_apy_kemi_exec_func_207, NULL}, - { sr_apy_kemi_exec_func_208, NULL}, - { sr_apy_kemi_exec_func_209, NULL}, - { sr_apy_kemi_exec_func_210, NULL}, - { sr_apy_kemi_exec_func_211, NULL}, - { sr_apy_kemi_exec_func_212, NULL}, - { sr_apy_kemi_exec_func_213, NULL}, - { sr_apy_kemi_exec_func_214, NULL}, - { sr_apy_kemi_exec_func_215, NULL}, - { sr_apy_kemi_exec_func_216, NULL}, - { sr_apy_kemi_exec_func_217, NULL}, - { sr_apy_kemi_exec_func_218, NULL}, - { sr_apy_kemi_exec_func_219, NULL}, - { sr_apy_kemi_exec_func_220, NULL}, - { sr_apy_kemi_exec_func_221, NULL}, - { sr_apy_kemi_exec_func_222, NULL}, - { sr_apy_kemi_exec_func_223, NULL}, - { sr_apy_kemi_exec_func_224, NULL}, - { sr_apy_kemi_exec_func_225, NULL}, - { sr_apy_kemi_exec_func_226, NULL}, - { sr_apy_kemi_exec_func_227, NULL}, - { sr_apy_kemi_exec_func_228, NULL}, - { sr_apy_kemi_exec_func_229, NULL}, - { sr_apy_kemi_exec_func_230, NULL}, - { sr_apy_kemi_exec_func_231, NULL}, - { sr_apy_kemi_exec_func_232, NULL}, - { sr_apy_kemi_exec_func_233, NULL}, - { sr_apy_kemi_exec_func_234, NULL}, - { sr_apy_kemi_exec_func_235, NULL}, - { sr_apy_kemi_exec_func_236, NULL}, - { sr_apy_kemi_exec_func_237, NULL}, - { sr_apy_kemi_exec_func_238, NULL}, - { sr_apy_kemi_exec_func_239, NULL}, - { sr_apy_kemi_exec_func_240, NULL}, - { sr_apy_kemi_exec_func_241, NULL}, - { sr_apy_kemi_exec_func_242, NULL}, - { sr_apy_kemi_exec_func_243, NULL}, - { sr_apy_kemi_exec_func_244, NULL}, - { sr_apy_kemi_exec_func_245, NULL}, - { sr_apy_kemi_exec_func_246, NULL}, - { sr_apy_kemi_exec_func_247, NULL}, - { sr_apy_kemi_exec_func_248, NULL}, - { sr_apy_kemi_exec_func_249, NULL}, - { sr_apy_kemi_exec_func_250, NULL}, - { sr_apy_kemi_exec_func_251, NULL}, - { sr_apy_kemi_exec_func_252, NULL}, - { sr_apy_kemi_exec_func_253, NULL}, - { sr_apy_kemi_exec_func_254, NULL}, - { sr_apy_kemi_exec_func_255, NULL}, - { sr_apy_kemi_exec_func_256, NULL}, - { sr_apy_kemi_exec_func_257, NULL}, - { sr_apy_kemi_exec_func_258, NULL}, - { sr_apy_kemi_exec_func_259, NULL}, - { sr_apy_kemi_exec_func_260, NULL}, - { sr_apy_kemi_exec_func_261, NULL}, - { sr_apy_kemi_exec_func_262, NULL}, - { sr_apy_kemi_exec_func_263, NULL}, - { sr_apy_kemi_exec_func_264, NULL}, - { sr_apy_kemi_exec_func_265, NULL}, - { sr_apy_kemi_exec_func_266, NULL}, - { sr_apy_kemi_exec_func_267, NULL}, - { sr_apy_kemi_exec_func_268, NULL}, - { sr_apy_kemi_exec_func_269, NULL}, - { sr_apy_kemi_exec_func_270, NULL}, - { sr_apy_kemi_exec_func_271, NULL}, - { sr_apy_kemi_exec_func_272, NULL}, - { sr_apy_kemi_exec_func_273, NULL}, - { sr_apy_kemi_exec_func_274, NULL}, - { sr_apy_kemi_exec_func_275, NULL}, - { sr_apy_kemi_exec_func_276, NULL}, - { sr_apy_kemi_exec_func_277, NULL}, - { sr_apy_kemi_exec_func_278, NULL}, - { sr_apy_kemi_exec_func_279, NULL}, - { sr_apy_kemi_exec_func_280, NULL}, - { sr_apy_kemi_exec_func_281, NULL}, - { sr_apy_kemi_exec_func_282, NULL}, - { sr_apy_kemi_exec_func_283, NULL}, - { sr_apy_kemi_exec_func_284, NULL}, - { sr_apy_kemi_exec_func_285, NULL}, - { sr_apy_kemi_exec_func_286, NULL}, - { sr_apy_kemi_exec_func_287, NULL}, - { sr_apy_kemi_exec_func_288, NULL}, - { sr_apy_kemi_exec_func_289, NULL}, - { sr_apy_kemi_exec_func_290, NULL}, - { sr_apy_kemi_exec_func_291, NULL}, - { sr_apy_kemi_exec_func_292, NULL}, - { sr_apy_kemi_exec_func_293, NULL}, - { sr_apy_kemi_exec_func_294, NULL}, - { sr_apy_kemi_exec_func_295, NULL}, - { sr_apy_kemi_exec_func_296, NULL}, - { sr_apy_kemi_exec_func_297, NULL}, - { sr_apy_kemi_exec_func_298, NULL}, - { sr_apy_kemi_exec_func_299, NULL}, - { sr_apy_kemi_exec_func_300, NULL}, - { sr_apy_kemi_exec_func_301, NULL}, - { sr_apy_kemi_exec_func_302, NULL}, - { sr_apy_kemi_exec_func_303, NULL}, - { sr_apy_kemi_exec_func_304, NULL}, - { sr_apy_kemi_exec_func_305, NULL}, - { sr_apy_kemi_exec_func_306, NULL}, - { sr_apy_kemi_exec_func_307, NULL}, - { sr_apy_kemi_exec_func_308, NULL}, - { sr_apy_kemi_exec_func_309, NULL}, - { sr_apy_kemi_exec_func_310, NULL}, - { sr_apy_kemi_exec_func_311, NULL}, - { sr_apy_kemi_exec_func_312, NULL}, - { sr_apy_kemi_exec_func_313, NULL}, - { sr_apy_kemi_exec_func_314, NULL}, - { sr_apy_kemi_exec_func_315, NULL}, - { sr_apy_kemi_exec_func_316, NULL}, - { sr_apy_kemi_exec_func_317, NULL}, - { sr_apy_kemi_exec_func_318, NULL}, - { sr_apy_kemi_exec_func_319, NULL}, - { sr_apy_kemi_exec_func_320, NULL}, - { sr_apy_kemi_exec_func_321, NULL}, - { sr_apy_kemi_exec_func_322, NULL}, - { sr_apy_kemi_exec_func_323, NULL}, - { sr_apy_kemi_exec_func_324, NULL}, - { sr_apy_kemi_exec_func_325, NULL}, - { sr_apy_kemi_exec_func_326, NULL}, - { sr_apy_kemi_exec_func_327, NULL}, - { sr_apy_kemi_exec_func_328, NULL}, - { sr_apy_kemi_exec_func_329, NULL}, - { sr_apy_kemi_exec_func_330, NULL}, - { sr_apy_kemi_exec_func_331, NULL}, - { sr_apy_kemi_exec_func_332, NULL}, - { sr_apy_kemi_exec_func_333, NULL}, - { sr_apy_kemi_exec_func_334, NULL}, - { sr_apy_kemi_exec_func_335, NULL}, - { sr_apy_kemi_exec_func_336, NULL}, - { sr_apy_kemi_exec_func_337, NULL}, - { sr_apy_kemi_exec_func_338, NULL}, - { sr_apy_kemi_exec_func_339, NULL}, - { sr_apy_kemi_exec_func_340, NULL}, - { sr_apy_kemi_exec_func_341, NULL}, - { sr_apy_kemi_exec_func_342, NULL}, - { sr_apy_kemi_exec_func_343, NULL}, - { sr_apy_kemi_exec_func_344, NULL}, - { sr_apy_kemi_exec_func_345, NULL}, - { sr_apy_kemi_exec_func_346, NULL}, - { sr_apy_kemi_exec_func_347, NULL}, - { sr_apy_kemi_exec_func_348, NULL}, - { sr_apy_kemi_exec_func_349, NULL}, - { sr_apy_kemi_exec_func_350, NULL}, - { sr_apy_kemi_exec_func_351, NULL}, - { sr_apy_kemi_exec_func_352, NULL}, - { sr_apy_kemi_exec_func_353, NULL}, - { sr_apy_kemi_exec_func_354, NULL}, - { sr_apy_kemi_exec_func_355, NULL}, - { sr_apy_kemi_exec_func_356, NULL}, - { sr_apy_kemi_exec_func_357, NULL}, - { sr_apy_kemi_exec_func_358, NULL}, - { sr_apy_kemi_exec_func_359, NULL}, - { sr_apy_kemi_exec_func_360, NULL}, - { sr_apy_kemi_exec_func_361, NULL}, - { sr_apy_kemi_exec_func_362, NULL}, - { sr_apy_kemi_exec_func_363, NULL}, - { sr_apy_kemi_exec_func_364, NULL}, - { sr_apy_kemi_exec_func_365, NULL}, - { sr_apy_kemi_exec_func_366, NULL}, - { sr_apy_kemi_exec_func_367, NULL}, - { sr_apy_kemi_exec_func_368, NULL}, - { sr_apy_kemi_exec_func_369, NULL}, - { sr_apy_kemi_exec_func_370, NULL}, - { sr_apy_kemi_exec_func_371, NULL}, - { sr_apy_kemi_exec_func_372, NULL}, - { sr_apy_kemi_exec_func_373, NULL}, - { sr_apy_kemi_exec_func_374, NULL}, - { sr_apy_kemi_exec_func_375, NULL}, - { sr_apy_kemi_exec_func_376, NULL}, - { sr_apy_kemi_exec_func_377, NULL}, - { sr_apy_kemi_exec_func_378, NULL}, - { sr_apy_kemi_exec_func_379, NULL}, - { sr_apy_kemi_exec_func_380, NULL}, - { sr_apy_kemi_exec_func_381, NULL}, - { sr_apy_kemi_exec_func_382, NULL}, - { sr_apy_kemi_exec_func_383, NULL}, - { sr_apy_kemi_exec_func_384, NULL}, - { sr_apy_kemi_exec_func_385, NULL}, - { sr_apy_kemi_exec_func_386, NULL}, - { sr_apy_kemi_exec_func_387, NULL}, - { sr_apy_kemi_exec_func_388, NULL}, - { sr_apy_kemi_exec_func_389, NULL}, - { sr_apy_kemi_exec_func_390, NULL}, - { sr_apy_kemi_exec_func_391, NULL}, - { sr_apy_kemi_exec_func_392, NULL}, - { sr_apy_kemi_exec_func_393, NULL}, - { sr_apy_kemi_exec_func_394, NULL}, - { sr_apy_kemi_exec_func_395, NULL}, - { sr_apy_kemi_exec_func_396, NULL}, - { sr_apy_kemi_exec_func_397, NULL}, - { sr_apy_kemi_exec_func_398, NULL}, - { sr_apy_kemi_exec_func_399, NULL}, - { sr_apy_kemi_exec_func_400, NULL}, - { sr_apy_kemi_exec_func_401, NULL}, - { sr_apy_kemi_exec_func_402, NULL}, - { sr_apy_kemi_exec_func_403, NULL}, - { sr_apy_kemi_exec_func_404, NULL}, - { sr_apy_kemi_exec_func_405, NULL}, - { sr_apy_kemi_exec_func_406, NULL}, - { sr_apy_kemi_exec_func_407, NULL}, - { sr_apy_kemi_exec_func_408, NULL}, - { sr_apy_kemi_exec_func_409, NULL}, - { sr_apy_kemi_exec_func_410, NULL}, - { sr_apy_kemi_exec_func_411, NULL}, - { sr_apy_kemi_exec_func_412, NULL}, - { sr_apy_kemi_exec_func_413, NULL}, - { sr_apy_kemi_exec_func_414, NULL}, - { sr_apy_kemi_exec_func_415, NULL}, - { sr_apy_kemi_exec_func_416, NULL}, - { sr_apy_kemi_exec_func_417, NULL}, - { sr_apy_kemi_exec_func_418, NULL}, - { sr_apy_kemi_exec_func_419, NULL}, - { sr_apy_kemi_exec_func_420, NULL}, - { sr_apy_kemi_exec_func_421, NULL}, - { sr_apy_kemi_exec_func_422, NULL}, - { sr_apy_kemi_exec_func_423, NULL}, - { sr_apy_kemi_exec_func_424, NULL}, - { sr_apy_kemi_exec_func_425, NULL}, - { sr_apy_kemi_exec_func_426, NULL}, - { sr_apy_kemi_exec_func_427, NULL}, - { sr_apy_kemi_exec_func_428, NULL}, - { sr_apy_kemi_exec_func_429, NULL}, - { sr_apy_kemi_exec_func_430, NULL}, - { sr_apy_kemi_exec_func_431, NULL}, - { sr_apy_kemi_exec_func_432, NULL}, - { sr_apy_kemi_exec_func_433, NULL}, - { sr_apy_kemi_exec_func_434, NULL}, - { sr_apy_kemi_exec_func_435, NULL}, - { sr_apy_kemi_exec_func_436, NULL}, - { sr_apy_kemi_exec_func_437, NULL}, - { sr_apy_kemi_exec_func_438, NULL}, - { sr_apy_kemi_exec_func_439, NULL}, - { sr_apy_kemi_exec_func_440, NULL}, - { sr_apy_kemi_exec_func_441, NULL}, - { sr_apy_kemi_exec_func_442, NULL}, - { sr_apy_kemi_exec_func_443, NULL}, - { sr_apy_kemi_exec_func_444, NULL}, - { sr_apy_kemi_exec_func_445, NULL}, - { sr_apy_kemi_exec_func_446, NULL}, - { sr_apy_kemi_exec_func_447, NULL}, - { sr_apy_kemi_exec_func_448, NULL}, - { sr_apy_kemi_exec_func_449, NULL}, - { sr_apy_kemi_exec_func_450, NULL}, - { sr_apy_kemi_exec_func_451, NULL}, - { sr_apy_kemi_exec_func_452, NULL}, - { sr_apy_kemi_exec_func_453, NULL}, - { sr_apy_kemi_exec_func_454, NULL}, - { sr_apy_kemi_exec_func_455, NULL}, - { sr_apy_kemi_exec_func_456, NULL}, - { sr_apy_kemi_exec_func_457, NULL}, - { sr_apy_kemi_exec_func_458, NULL}, - { sr_apy_kemi_exec_func_459, NULL}, - { sr_apy_kemi_exec_func_460, NULL}, - { sr_apy_kemi_exec_func_461, NULL}, - { sr_apy_kemi_exec_func_462, NULL}, - { sr_apy_kemi_exec_func_463, NULL}, - { sr_apy_kemi_exec_func_464, NULL}, - { sr_apy_kemi_exec_func_465, NULL}, - { sr_apy_kemi_exec_func_466, NULL}, - { sr_apy_kemi_exec_func_467, NULL}, - { sr_apy_kemi_exec_func_468, NULL}, - { sr_apy_kemi_exec_func_469, NULL}, - { sr_apy_kemi_exec_func_470, NULL}, - { sr_apy_kemi_exec_func_471, NULL}, - { sr_apy_kemi_exec_func_472, NULL}, - { sr_apy_kemi_exec_func_473, NULL}, - { sr_apy_kemi_exec_func_474, NULL}, - { sr_apy_kemi_exec_func_475, NULL}, - { sr_apy_kemi_exec_func_476, NULL}, - { sr_apy_kemi_exec_func_477, NULL}, - { sr_apy_kemi_exec_func_478, NULL}, - { sr_apy_kemi_exec_func_479, NULL}, - { sr_apy_kemi_exec_func_480, NULL}, - { sr_apy_kemi_exec_func_481, NULL}, - { sr_apy_kemi_exec_func_482, NULL}, - { sr_apy_kemi_exec_func_483, NULL}, - { sr_apy_kemi_exec_func_484, NULL}, - { sr_apy_kemi_exec_func_485, NULL}, - { sr_apy_kemi_exec_func_486, NULL}, - { sr_apy_kemi_exec_func_487, NULL}, - { sr_apy_kemi_exec_func_488, NULL}, - { sr_apy_kemi_exec_func_489, NULL}, - { sr_apy_kemi_exec_func_490, NULL}, - { sr_apy_kemi_exec_func_491, NULL}, - { sr_apy_kemi_exec_func_492, NULL}, - { sr_apy_kemi_exec_func_493, NULL}, - { sr_apy_kemi_exec_func_494, NULL}, - { sr_apy_kemi_exec_func_495, NULL}, - { sr_apy_kemi_exec_func_496, NULL}, - { sr_apy_kemi_exec_func_497, NULL}, - { sr_apy_kemi_exec_func_498, NULL}, - { sr_apy_kemi_exec_func_499, NULL}, - { sr_apy_kemi_exec_func_500, NULL}, - { sr_apy_kemi_exec_func_501, NULL}, - { sr_apy_kemi_exec_func_502, NULL}, - { sr_apy_kemi_exec_func_503, NULL}, - { sr_apy_kemi_exec_func_504, NULL}, - { sr_apy_kemi_exec_func_505, NULL}, - { sr_apy_kemi_exec_func_506, NULL}, - { sr_apy_kemi_exec_func_507, NULL}, - { sr_apy_kemi_exec_func_508, NULL}, - { sr_apy_kemi_exec_func_509, NULL}, - { sr_apy_kemi_exec_func_510, NULL}, - { sr_apy_kemi_exec_func_511, NULL}, - { sr_apy_kemi_exec_func_512, NULL}, - { sr_apy_kemi_exec_func_513, NULL}, - { sr_apy_kemi_exec_func_514, NULL}, - { sr_apy_kemi_exec_func_515, NULL}, - { sr_apy_kemi_exec_func_516, NULL}, - { sr_apy_kemi_exec_func_517, NULL}, - { sr_apy_kemi_exec_func_518, NULL}, - { sr_apy_kemi_exec_func_519, NULL}, - { sr_apy_kemi_exec_func_520, NULL}, - { sr_apy_kemi_exec_func_521, NULL}, - { sr_apy_kemi_exec_func_522, NULL}, - { sr_apy_kemi_exec_func_523, NULL}, - { sr_apy_kemi_exec_func_524, NULL}, - { sr_apy_kemi_exec_func_525, NULL}, - { sr_apy_kemi_exec_func_526, NULL}, - { sr_apy_kemi_exec_func_527, NULL}, - { sr_apy_kemi_exec_func_528, NULL}, - { sr_apy_kemi_exec_func_529, NULL}, - { sr_apy_kemi_exec_func_530, NULL}, - { sr_apy_kemi_exec_func_531, NULL}, - { sr_apy_kemi_exec_func_532, NULL}, - { sr_apy_kemi_exec_func_533, NULL}, - { sr_apy_kemi_exec_func_534, NULL}, - { sr_apy_kemi_exec_func_535, NULL}, - { sr_apy_kemi_exec_func_536, NULL}, - { sr_apy_kemi_exec_func_537, NULL}, - { sr_apy_kemi_exec_func_538, NULL}, - { sr_apy_kemi_exec_func_539, NULL}, - { sr_apy_kemi_exec_func_540, NULL}, - { sr_apy_kemi_exec_func_541, NULL}, - { sr_apy_kemi_exec_func_542, NULL}, - { sr_apy_kemi_exec_func_543, NULL}, - { sr_apy_kemi_exec_func_544, NULL}, - { sr_apy_kemi_exec_func_545, NULL}, - { sr_apy_kemi_exec_func_546, NULL}, - { sr_apy_kemi_exec_func_547, NULL}, - { sr_apy_kemi_exec_func_548, NULL}, - { sr_apy_kemi_exec_func_549, NULL}, - { sr_apy_kemi_exec_func_550, NULL}, - { sr_apy_kemi_exec_func_551, NULL}, - { sr_apy_kemi_exec_func_552, NULL}, - { sr_apy_kemi_exec_func_553, NULL}, - { sr_apy_kemi_exec_func_554, NULL}, - { sr_apy_kemi_exec_func_555, NULL}, - { sr_apy_kemi_exec_func_556, NULL}, - { sr_apy_kemi_exec_func_557, NULL}, - { sr_apy_kemi_exec_func_558, NULL}, - { sr_apy_kemi_exec_func_559, NULL}, - { sr_apy_kemi_exec_func_560, NULL}, - { sr_apy_kemi_exec_func_561, NULL}, - { sr_apy_kemi_exec_func_562, NULL}, - { sr_apy_kemi_exec_func_563, NULL}, - { sr_apy_kemi_exec_func_564, NULL}, - { sr_apy_kemi_exec_func_565, NULL}, - { sr_apy_kemi_exec_func_566, NULL}, - { sr_apy_kemi_exec_func_567, NULL}, - { sr_apy_kemi_exec_func_568, NULL}, - { sr_apy_kemi_exec_func_569, NULL}, - { sr_apy_kemi_exec_func_570, NULL}, - { sr_apy_kemi_exec_func_571, NULL}, - { sr_apy_kemi_exec_func_572, NULL}, - { sr_apy_kemi_exec_func_573, NULL}, - { sr_apy_kemi_exec_func_574, NULL}, - { sr_apy_kemi_exec_func_575, NULL}, - { sr_apy_kemi_exec_func_576, NULL}, - { sr_apy_kemi_exec_func_577, NULL}, - { sr_apy_kemi_exec_func_578, NULL}, - { sr_apy_kemi_exec_func_579, NULL}, - { sr_apy_kemi_exec_func_580, NULL}, - { sr_apy_kemi_exec_func_581, NULL}, - { sr_apy_kemi_exec_func_582, NULL}, - { sr_apy_kemi_exec_func_583, NULL}, - { sr_apy_kemi_exec_func_584, NULL}, - { sr_apy_kemi_exec_func_585, NULL}, - { sr_apy_kemi_exec_func_586, NULL}, - { sr_apy_kemi_exec_func_587, NULL}, - { sr_apy_kemi_exec_func_588, NULL}, - { sr_apy_kemi_exec_func_589, NULL}, - { sr_apy_kemi_exec_func_590, NULL}, - { sr_apy_kemi_exec_func_591, NULL}, - { sr_apy_kemi_exec_func_592, NULL}, - { sr_apy_kemi_exec_func_593, NULL}, - { sr_apy_kemi_exec_func_594, NULL}, - { sr_apy_kemi_exec_func_595, NULL}, - { sr_apy_kemi_exec_func_596, NULL}, - { sr_apy_kemi_exec_func_597, NULL}, - { sr_apy_kemi_exec_func_598, NULL}, - { sr_apy_kemi_exec_func_599, NULL}, - { sr_apy_kemi_exec_func_600, NULL}, - { sr_apy_kemi_exec_func_601, NULL}, - { sr_apy_kemi_exec_func_602, NULL}, - { sr_apy_kemi_exec_func_603, NULL}, - { sr_apy_kemi_exec_func_604, NULL}, - { sr_apy_kemi_exec_func_605, NULL}, - { sr_apy_kemi_exec_func_606, NULL}, - { sr_apy_kemi_exec_func_607, NULL}, - { sr_apy_kemi_exec_func_608, NULL}, - { sr_apy_kemi_exec_func_609, NULL}, - { sr_apy_kemi_exec_func_610, NULL}, - { sr_apy_kemi_exec_func_611, NULL}, - { sr_apy_kemi_exec_func_612, NULL}, - { sr_apy_kemi_exec_func_613, NULL}, - { sr_apy_kemi_exec_func_614, NULL}, - { sr_apy_kemi_exec_func_615, NULL}, - { sr_apy_kemi_exec_func_616, NULL}, - { sr_apy_kemi_exec_func_617, NULL}, - { sr_apy_kemi_exec_func_618, NULL}, - { sr_apy_kemi_exec_func_619, NULL}, - { sr_apy_kemi_exec_func_620, NULL}, - { sr_apy_kemi_exec_func_621, NULL}, - { sr_apy_kemi_exec_func_622, NULL}, - { sr_apy_kemi_exec_func_623, NULL}, - { sr_apy_kemi_exec_func_624, NULL}, - { sr_apy_kemi_exec_func_625, NULL}, - { sr_apy_kemi_exec_func_626, NULL}, - { sr_apy_kemi_exec_func_627, NULL}, - { sr_apy_kemi_exec_func_628, NULL}, - { sr_apy_kemi_exec_func_629, NULL}, - { sr_apy_kemi_exec_func_630, NULL}, - { sr_apy_kemi_exec_func_631, NULL}, - { sr_apy_kemi_exec_func_632, NULL}, - { sr_apy_kemi_exec_func_633, NULL}, - { sr_apy_kemi_exec_func_634, NULL}, - { sr_apy_kemi_exec_func_635, NULL}, - { sr_apy_kemi_exec_func_636, NULL}, - { sr_apy_kemi_exec_func_637, NULL}, - { sr_apy_kemi_exec_func_638, NULL}, - { sr_apy_kemi_exec_func_639, NULL}, - { sr_apy_kemi_exec_func_640, NULL}, - { sr_apy_kemi_exec_func_641, NULL}, - { sr_apy_kemi_exec_func_642, NULL}, - { sr_apy_kemi_exec_func_643, NULL}, - { sr_apy_kemi_exec_func_644, NULL}, - { sr_apy_kemi_exec_func_645, NULL}, - { sr_apy_kemi_exec_func_646, NULL}, - { sr_apy_kemi_exec_func_647, NULL}, - { sr_apy_kemi_exec_func_648, NULL}, - { sr_apy_kemi_exec_func_649, NULL}, - { sr_apy_kemi_exec_func_650, NULL}, - { sr_apy_kemi_exec_func_651, NULL}, - { sr_apy_kemi_exec_func_652, NULL}, - { sr_apy_kemi_exec_func_653, NULL}, - { sr_apy_kemi_exec_func_654, NULL}, - { sr_apy_kemi_exec_func_655, NULL}, - { sr_apy_kemi_exec_func_656, NULL}, - { sr_apy_kemi_exec_func_657, NULL}, - { sr_apy_kemi_exec_func_658, NULL}, - { sr_apy_kemi_exec_func_659, NULL}, - { sr_apy_kemi_exec_func_660, NULL}, - { sr_apy_kemi_exec_func_661, NULL}, - { sr_apy_kemi_exec_func_662, NULL}, - { sr_apy_kemi_exec_func_663, NULL}, - { sr_apy_kemi_exec_func_664, NULL}, - { sr_apy_kemi_exec_func_665, NULL}, - { sr_apy_kemi_exec_func_666, NULL}, - { sr_apy_kemi_exec_func_667, NULL}, - { sr_apy_kemi_exec_func_668, NULL}, - { sr_apy_kemi_exec_func_669, NULL}, - { sr_apy_kemi_exec_func_670, NULL}, - { sr_apy_kemi_exec_func_671, NULL}, - { sr_apy_kemi_exec_func_672, NULL}, - { sr_apy_kemi_exec_func_673, NULL}, - { sr_apy_kemi_exec_func_674, NULL}, - { sr_apy_kemi_exec_func_675, NULL}, - { sr_apy_kemi_exec_func_676, NULL}, - { sr_apy_kemi_exec_func_677, NULL}, - { sr_apy_kemi_exec_func_678, NULL}, - { sr_apy_kemi_exec_func_679, NULL}, - { sr_apy_kemi_exec_func_680, NULL}, - { sr_apy_kemi_exec_func_681, NULL}, - { sr_apy_kemi_exec_func_682, NULL}, - { sr_apy_kemi_exec_func_683, NULL}, - { sr_apy_kemi_exec_func_684, NULL}, - { sr_apy_kemi_exec_func_685, NULL}, - { sr_apy_kemi_exec_func_686, NULL}, - { sr_apy_kemi_exec_func_687, NULL}, - { sr_apy_kemi_exec_func_688, NULL}, - { sr_apy_kemi_exec_func_689, NULL}, - { sr_apy_kemi_exec_func_690, NULL}, - { sr_apy_kemi_exec_func_691, NULL}, - { sr_apy_kemi_exec_func_692, NULL}, - { sr_apy_kemi_exec_func_693, NULL}, - { sr_apy_kemi_exec_func_694, NULL}, - { sr_apy_kemi_exec_func_695, NULL}, - { sr_apy_kemi_exec_func_696, NULL}, - { sr_apy_kemi_exec_func_697, NULL}, - { sr_apy_kemi_exec_func_698, NULL}, - { sr_apy_kemi_exec_func_699, NULL}, - { sr_apy_kemi_exec_func_700, NULL}, - { sr_apy_kemi_exec_func_701, NULL}, - { sr_apy_kemi_exec_func_702, NULL}, - { sr_apy_kemi_exec_func_703, NULL}, - { sr_apy_kemi_exec_func_704, NULL}, - { sr_apy_kemi_exec_func_705, NULL}, - { sr_apy_kemi_exec_func_706, NULL}, - { sr_apy_kemi_exec_func_707, NULL}, - { sr_apy_kemi_exec_func_708, NULL}, - { sr_apy_kemi_exec_func_709, NULL}, - { sr_apy_kemi_exec_func_710, NULL}, - { sr_apy_kemi_exec_func_711, NULL}, - { sr_apy_kemi_exec_func_712, NULL}, - { sr_apy_kemi_exec_func_713, NULL}, - { sr_apy_kemi_exec_func_714, NULL}, - { sr_apy_kemi_exec_func_715, NULL}, - { sr_apy_kemi_exec_func_716, NULL}, - { sr_apy_kemi_exec_func_717, NULL}, - { sr_apy_kemi_exec_func_718, NULL}, - { sr_apy_kemi_exec_func_719, NULL}, - { sr_apy_kemi_exec_func_720, NULL}, - { sr_apy_kemi_exec_func_721, NULL}, - { sr_apy_kemi_exec_func_722, NULL}, - { sr_apy_kemi_exec_func_723, NULL}, - { sr_apy_kemi_exec_func_724, NULL}, - { sr_apy_kemi_exec_func_725, NULL}, - { sr_apy_kemi_exec_func_726, NULL}, - { sr_apy_kemi_exec_func_727, NULL}, - { sr_apy_kemi_exec_func_728, NULL}, - { sr_apy_kemi_exec_func_729, NULL}, - { sr_apy_kemi_exec_func_730, NULL}, - { sr_apy_kemi_exec_func_731, NULL}, - { sr_apy_kemi_exec_func_732, NULL}, - { sr_apy_kemi_exec_func_733, NULL}, - { sr_apy_kemi_exec_func_734, NULL}, - { sr_apy_kemi_exec_func_735, NULL}, - { sr_apy_kemi_exec_func_736, NULL}, - { sr_apy_kemi_exec_func_737, NULL}, - { sr_apy_kemi_exec_func_738, NULL}, - { sr_apy_kemi_exec_func_739, NULL}, - { sr_apy_kemi_exec_func_740, NULL}, - { sr_apy_kemi_exec_func_741, NULL}, - { sr_apy_kemi_exec_func_742, NULL}, - { sr_apy_kemi_exec_func_743, NULL}, - { sr_apy_kemi_exec_func_744, NULL}, - { sr_apy_kemi_exec_func_745, NULL}, - { sr_apy_kemi_exec_func_746, NULL}, - { sr_apy_kemi_exec_func_747, NULL}, - { sr_apy_kemi_exec_func_748, NULL}, - { sr_apy_kemi_exec_func_749, NULL}, - { sr_apy_kemi_exec_func_750, NULL}, - { sr_apy_kemi_exec_func_751, NULL}, - { sr_apy_kemi_exec_func_752, NULL}, - { sr_apy_kemi_exec_func_753, NULL}, - { sr_apy_kemi_exec_func_754, NULL}, - { sr_apy_kemi_exec_func_755, NULL}, - { sr_apy_kemi_exec_func_756, NULL}, - { sr_apy_kemi_exec_func_757, NULL}, - { sr_apy_kemi_exec_func_758, NULL}, - { sr_apy_kemi_exec_func_759, NULL}, - { sr_apy_kemi_exec_func_760, NULL}, - { sr_apy_kemi_exec_func_761, NULL}, - { sr_apy_kemi_exec_func_762, NULL}, - { sr_apy_kemi_exec_func_763, NULL}, - { sr_apy_kemi_exec_func_764, NULL}, - { sr_apy_kemi_exec_func_765, NULL}, - { sr_apy_kemi_exec_func_766, NULL}, - { sr_apy_kemi_exec_func_767, NULL}, - { sr_apy_kemi_exec_func_768, NULL}, - { sr_apy_kemi_exec_func_769, NULL}, - { sr_apy_kemi_exec_func_770, NULL}, - { sr_apy_kemi_exec_func_771, NULL}, - { sr_apy_kemi_exec_func_772, NULL}, - { sr_apy_kemi_exec_func_773, NULL}, - { sr_apy_kemi_exec_func_774, NULL}, - { sr_apy_kemi_exec_func_775, NULL}, - { sr_apy_kemi_exec_func_776, NULL}, - { sr_apy_kemi_exec_func_777, NULL}, - { sr_apy_kemi_exec_func_778, NULL}, - { sr_apy_kemi_exec_func_779, NULL}, - { sr_apy_kemi_exec_func_780, NULL}, - { sr_apy_kemi_exec_func_781, NULL}, - { sr_apy_kemi_exec_func_782, NULL}, - { sr_apy_kemi_exec_func_783, NULL}, - { sr_apy_kemi_exec_func_784, NULL}, - { sr_apy_kemi_exec_func_785, NULL}, - { sr_apy_kemi_exec_func_786, NULL}, - { sr_apy_kemi_exec_func_787, NULL}, - { sr_apy_kemi_exec_func_788, NULL}, - { sr_apy_kemi_exec_func_789, NULL}, - { sr_apy_kemi_exec_func_790, NULL}, - { sr_apy_kemi_exec_func_791, NULL}, - { sr_apy_kemi_exec_func_792, NULL}, - { sr_apy_kemi_exec_func_793, NULL}, - { sr_apy_kemi_exec_func_794, NULL}, - { sr_apy_kemi_exec_func_795, NULL}, - { sr_apy_kemi_exec_func_796, NULL}, - { sr_apy_kemi_exec_func_797, NULL}, - { sr_apy_kemi_exec_func_798, NULL}, - { sr_apy_kemi_exec_func_799, NULL}, - { sr_apy_kemi_exec_func_800, NULL}, - { sr_apy_kemi_exec_func_801, NULL}, - { sr_apy_kemi_exec_func_802, NULL}, - { sr_apy_kemi_exec_func_803, NULL}, - { sr_apy_kemi_exec_func_804, NULL}, - { sr_apy_kemi_exec_func_805, NULL}, - { sr_apy_kemi_exec_func_806, NULL}, - { sr_apy_kemi_exec_func_807, NULL}, - { sr_apy_kemi_exec_func_808, NULL}, - { sr_apy_kemi_exec_func_809, NULL}, - { sr_apy_kemi_exec_func_810, NULL}, - { sr_apy_kemi_exec_func_811, NULL}, - { sr_apy_kemi_exec_func_812, NULL}, - { sr_apy_kemi_exec_func_813, NULL}, - { sr_apy_kemi_exec_func_814, NULL}, - { sr_apy_kemi_exec_func_815, NULL}, - { sr_apy_kemi_exec_func_816, NULL}, - { sr_apy_kemi_exec_func_817, NULL}, - { sr_apy_kemi_exec_func_818, NULL}, - { sr_apy_kemi_exec_func_819, NULL}, - { sr_apy_kemi_exec_func_820, NULL}, - { sr_apy_kemi_exec_func_821, NULL}, - { sr_apy_kemi_exec_func_822, NULL}, - { sr_apy_kemi_exec_func_823, NULL}, - { sr_apy_kemi_exec_func_824, NULL}, - { sr_apy_kemi_exec_func_825, NULL}, - { sr_apy_kemi_exec_func_826, NULL}, - { sr_apy_kemi_exec_func_827, NULL}, - { sr_apy_kemi_exec_func_828, NULL}, - { sr_apy_kemi_exec_func_829, NULL}, - { sr_apy_kemi_exec_func_830, NULL}, - { sr_apy_kemi_exec_func_831, NULL}, - { sr_apy_kemi_exec_func_832, NULL}, - { sr_apy_kemi_exec_func_833, NULL}, - { sr_apy_kemi_exec_func_834, NULL}, - { sr_apy_kemi_exec_func_835, NULL}, - { sr_apy_kemi_exec_func_836, NULL}, - { sr_apy_kemi_exec_func_837, NULL}, - { sr_apy_kemi_exec_func_838, NULL}, - { sr_apy_kemi_exec_func_839, NULL}, - { sr_apy_kemi_exec_func_840, NULL}, - { sr_apy_kemi_exec_func_841, NULL}, - { sr_apy_kemi_exec_func_842, NULL}, - { sr_apy_kemi_exec_func_843, NULL}, - { sr_apy_kemi_exec_func_844, NULL}, - { sr_apy_kemi_exec_func_845, NULL}, - { sr_apy_kemi_exec_func_846, NULL}, - { sr_apy_kemi_exec_func_847, NULL}, - { sr_apy_kemi_exec_func_848, NULL}, - { sr_apy_kemi_exec_func_849, NULL}, - { sr_apy_kemi_exec_func_850, NULL}, - { sr_apy_kemi_exec_func_851, NULL}, - { sr_apy_kemi_exec_func_852, NULL}, - { sr_apy_kemi_exec_func_853, NULL}, - { sr_apy_kemi_exec_func_854, NULL}, - { sr_apy_kemi_exec_func_855, NULL}, - { sr_apy_kemi_exec_func_856, NULL}, - { sr_apy_kemi_exec_func_857, NULL}, - { sr_apy_kemi_exec_func_858, NULL}, - { sr_apy_kemi_exec_func_859, NULL}, - { sr_apy_kemi_exec_func_860, NULL}, - { sr_apy_kemi_exec_func_861, NULL}, - { sr_apy_kemi_exec_func_862, NULL}, - { sr_apy_kemi_exec_func_863, NULL}, - { sr_apy_kemi_exec_func_864, NULL}, - { sr_apy_kemi_exec_func_865, NULL}, - { sr_apy_kemi_exec_func_866, NULL}, - { sr_apy_kemi_exec_func_867, NULL}, - { sr_apy_kemi_exec_func_868, NULL}, - { sr_apy_kemi_exec_func_869, NULL}, - { sr_apy_kemi_exec_func_870, NULL}, - { sr_apy_kemi_exec_func_871, NULL}, - { sr_apy_kemi_exec_func_872, NULL}, - { sr_apy_kemi_exec_func_873, NULL}, - { sr_apy_kemi_exec_func_874, NULL}, - { sr_apy_kemi_exec_func_875, NULL}, - { sr_apy_kemi_exec_func_876, NULL}, - { sr_apy_kemi_exec_func_877, NULL}, - { sr_apy_kemi_exec_func_878, NULL}, - { sr_apy_kemi_exec_func_879, NULL}, - { sr_apy_kemi_exec_func_880, NULL}, - { sr_apy_kemi_exec_func_881, NULL}, - { sr_apy_kemi_exec_func_882, NULL}, - { sr_apy_kemi_exec_func_883, NULL}, - { sr_apy_kemi_exec_func_884, NULL}, - { sr_apy_kemi_exec_func_885, NULL}, - { sr_apy_kemi_exec_func_886, NULL}, - { sr_apy_kemi_exec_func_887, NULL}, - { sr_apy_kemi_exec_func_888, NULL}, - { sr_apy_kemi_exec_func_889, NULL}, - { sr_apy_kemi_exec_func_890, NULL}, - { sr_apy_kemi_exec_func_891, NULL}, - { sr_apy_kemi_exec_func_892, NULL}, - { sr_apy_kemi_exec_func_893, NULL}, - { sr_apy_kemi_exec_func_894, NULL}, - { sr_apy_kemi_exec_func_895, NULL}, - { sr_apy_kemi_exec_func_896, NULL}, - { sr_apy_kemi_exec_func_897, NULL}, - { sr_apy_kemi_exec_func_898, NULL}, - { sr_apy_kemi_exec_func_899, NULL}, - { sr_apy_kemi_exec_func_900, NULL}, - { sr_apy_kemi_exec_func_901, NULL}, - { sr_apy_kemi_exec_func_902, NULL}, - { sr_apy_kemi_exec_func_903, NULL}, - { sr_apy_kemi_exec_func_904, NULL}, - { sr_apy_kemi_exec_func_905, NULL}, - { sr_apy_kemi_exec_func_906, NULL}, - { sr_apy_kemi_exec_func_907, NULL}, - { sr_apy_kemi_exec_func_908, NULL}, - { sr_apy_kemi_exec_func_909, NULL}, - { sr_apy_kemi_exec_func_910, NULL}, - { sr_apy_kemi_exec_func_911, NULL}, - { sr_apy_kemi_exec_func_912, NULL}, - { sr_apy_kemi_exec_func_913, NULL}, - { sr_apy_kemi_exec_func_914, NULL}, - { sr_apy_kemi_exec_func_915, NULL}, - { sr_apy_kemi_exec_func_916, NULL}, - { sr_apy_kemi_exec_func_917, NULL}, - { sr_apy_kemi_exec_func_918, NULL}, - { sr_apy_kemi_exec_func_919, NULL}, - { sr_apy_kemi_exec_func_920, NULL}, - { sr_apy_kemi_exec_func_921, NULL}, - { sr_apy_kemi_exec_func_922, NULL}, - { sr_apy_kemi_exec_func_923, NULL}, - { sr_apy_kemi_exec_func_924, NULL}, - { sr_apy_kemi_exec_func_925, NULL}, - { sr_apy_kemi_exec_func_926, NULL}, - { sr_apy_kemi_exec_func_927, NULL}, - { sr_apy_kemi_exec_func_928, NULL}, - { sr_apy_kemi_exec_func_929, NULL}, - { sr_apy_kemi_exec_func_930, NULL}, - { sr_apy_kemi_exec_func_931, NULL}, - { sr_apy_kemi_exec_func_932, NULL}, - { sr_apy_kemi_exec_func_933, NULL}, - { sr_apy_kemi_exec_func_934, NULL}, - { sr_apy_kemi_exec_func_935, NULL}, - { sr_apy_kemi_exec_func_936, NULL}, - { sr_apy_kemi_exec_func_937, NULL}, - { sr_apy_kemi_exec_func_938, NULL}, - { sr_apy_kemi_exec_func_939, NULL}, - { sr_apy_kemi_exec_func_940, NULL}, - { sr_apy_kemi_exec_func_941, NULL}, - { sr_apy_kemi_exec_func_942, NULL}, - { sr_apy_kemi_exec_func_943, NULL}, - { sr_apy_kemi_exec_func_944, NULL}, - { sr_apy_kemi_exec_func_945, NULL}, - { sr_apy_kemi_exec_func_946, NULL}, - { sr_apy_kemi_exec_func_947, NULL}, - { sr_apy_kemi_exec_func_948, NULL}, - { sr_apy_kemi_exec_func_949, NULL}, - { sr_apy_kemi_exec_func_950, NULL}, - { sr_apy_kemi_exec_func_951, NULL}, - { sr_apy_kemi_exec_func_952, NULL}, - { sr_apy_kemi_exec_func_953, NULL}, - { sr_apy_kemi_exec_func_954, NULL}, - { sr_apy_kemi_exec_func_955, NULL}, - { sr_apy_kemi_exec_func_956, NULL}, - { sr_apy_kemi_exec_func_957, NULL}, - { sr_apy_kemi_exec_func_958, NULL}, - { sr_apy_kemi_exec_func_959, NULL}, - { sr_apy_kemi_exec_func_960, NULL}, - { sr_apy_kemi_exec_func_961, NULL}, - { sr_apy_kemi_exec_func_962, NULL}, - { sr_apy_kemi_exec_func_963, NULL}, - { sr_apy_kemi_exec_func_964, NULL}, - { sr_apy_kemi_exec_func_965, NULL}, - { sr_apy_kemi_exec_func_966, NULL}, - { sr_apy_kemi_exec_func_967, NULL}, - { sr_apy_kemi_exec_func_968, NULL}, - { sr_apy_kemi_exec_func_969, NULL}, - { sr_apy_kemi_exec_func_970, NULL}, - { sr_apy_kemi_exec_func_971, NULL}, - { sr_apy_kemi_exec_func_972, NULL}, - { sr_apy_kemi_exec_func_973, NULL}, - { sr_apy_kemi_exec_func_974, NULL}, - { sr_apy_kemi_exec_func_975, NULL}, - { sr_apy_kemi_exec_func_976, NULL}, - { sr_apy_kemi_exec_func_977, NULL}, - { sr_apy_kemi_exec_func_978, NULL}, - { sr_apy_kemi_exec_func_979, NULL}, - { sr_apy_kemi_exec_func_980, NULL}, - { sr_apy_kemi_exec_func_981, NULL}, - { sr_apy_kemi_exec_func_982, NULL}, - { sr_apy_kemi_exec_func_983, NULL}, - { sr_apy_kemi_exec_func_984, NULL}, - { sr_apy_kemi_exec_func_985, NULL}, - { sr_apy_kemi_exec_func_986, NULL}, - { sr_apy_kemi_exec_func_987, NULL}, - { sr_apy_kemi_exec_func_988, NULL}, - { sr_apy_kemi_exec_func_989, NULL}, - { sr_apy_kemi_exec_func_990, NULL}, - { sr_apy_kemi_exec_func_991, NULL}, - { sr_apy_kemi_exec_func_992, NULL}, - { sr_apy_kemi_exec_func_993, NULL}, - { sr_apy_kemi_exec_func_994, NULL}, - { sr_apy_kemi_exec_func_995, NULL}, - { sr_apy_kemi_exec_func_996, NULL}, - { sr_apy_kemi_exec_func_997, NULL}, - { sr_apy_kemi_exec_func_998, NULL}, - { sr_apy_kemi_exec_func_999, NULL}, - { sr_apy_kemi_exec_func_1000, NULL}, - { sr_apy_kemi_exec_func_1001, NULL}, - { sr_apy_kemi_exec_func_1002, NULL}, - { sr_apy_kemi_exec_func_1003, NULL}, - { sr_apy_kemi_exec_func_1004, NULL}, - { sr_apy_kemi_exec_func_1005, NULL}, - { sr_apy_kemi_exec_func_1006, NULL}, - { sr_apy_kemi_exec_func_1007, NULL}, - { sr_apy_kemi_exec_func_1008, NULL}, - { sr_apy_kemi_exec_func_1009, NULL}, - { sr_apy_kemi_exec_func_1010, NULL}, - { sr_apy_kemi_exec_func_1011, NULL}, - { sr_apy_kemi_exec_func_1012, NULL}, - { sr_apy_kemi_exec_func_1013, NULL}, - { sr_apy_kemi_exec_func_1014, NULL}, - { sr_apy_kemi_exec_func_1015, NULL}, - { sr_apy_kemi_exec_func_1016, NULL}, - { sr_apy_kemi_exec_func_1017, NULL}, - { sr_apy_kemi_exec_func_1018, NULL}, - { sr_apy_kemi_exec_func_1019, NULL}, - { sr_apy_kemi_exec_func_1020, NULL}, - { sr_apy_kemi_exec_func_1021, NULL}, - { sr_apy_kemi_exec_func_1022, NULL}, - { sr_apy_kemi_exec_func_1023, NULL}, - {NULL, NULL} -}; + {sr_apy_kemi_exec_func_0, NULL}, {sr_apy_kemi_exec_func_1, NULL}, + {sr_apy_kemi_exec_func_2, NULL}, {sr_apy_kemi_exec_func_3, NULL}, + {sr_apy_kemi_exec_func_4, NULL}, {sr_apy_kemi_exec_func_5, NULL}, + {sr_apy_kemi_exec_func_6, NULL}, {sr_apy_kemi_exec_func_7, NULL}, + {sr_apy_kemi_exec_func_8, NULL}, {sr_apy_kemi_exec_func_9, NULL}, + {sr_apy_kemi_exec_func_10, NULL}, {sr_apy_kemi_exec_func_11, NULL}, + {sr_apy_kemi_exec_func_12, NULL}, {sr_apy_kemi_exec_func_13, NULL}, + {sr_apy_kemi_exec_func_14, NULL}, {sr_apy_kemi_exec_func_15, NULL}, + {sr_apy_kemi_exec_func_16, NULL}, {sr_apy_kemi_exec_func_17, NULL}, + {sr_apy_kemi_exec_func_18, NULL}, {sr_apy_kemi_exec_func_19, NULL}, + {sr_apy_kemi_exec_func_20, NULL}, {sr_apy_kemi_exec_func_21, NULL}, + {sr_apy_kemi_exec_func_22, NULL}, {sr_apy_kemi_exec_func_23, NULL}, + {sr_apy_kemi_exec_func_24, NULL}, {sr_apy_kemi_exec_func_25, NULL}, + {sr_apy_kemi_exec_func_26, NULL}, {sr_apy_kemi_exec_func_27, NULL}, + {sr_apy_kemi_exec_func_28, NULL}, {sr_apy_kemi_exec_func_29, NULL}, + {sr_apy_kemi_exec_func_30, NULL}, {sr_apy_kemi_exec_func_31, NULL}, + {sr_apy_kemi_exec_func_32, NULL}, {sr_apy_kemi_exec_func_33, NULL}, + {sr_apy_kemi_exec_func_34, NULL}, {sr_apy_kemi_exec_func_35, NULL}, + {sr_apy_kemi_exec_func_36, NULL}, {sr_apy_kemi_exec_func_37, NULL}, + {sr_apy_kemi_exec_func_38, NULL}, {sr_apy_kemi_exec_func_39, NULL}, + {sr_apy_kemi_exec_func_40, NULL}, {sr_apy_kemi_exec_func_41, NULL}, + {sr_apy_kemi_exec_func_42, NULL}, {sr_apy_kemi_exec_func_43, NULL}, + {sr_apy_kemi_exec_func_44, NULL}, {sr_apy_kemi_exec_func_45, NULL}, + {sr_apy_kemi_exec_func_46, NULL}, {sr_apy_kemi_exec_func_47, NULL}, + {sr_apy_kemi_exec_func_48, NULL}, {sr_apy_kemi_exec_func_49, NULL}, + {sr_apy_kemi_exec_func_50, NULL}, {sr_apy_kemi_exec_func_51, NULL}, + {sr_apy_kemi_exec_func_52, NULL}, {sr_apy_kemi_exec_func_53, NULL}, + {sr_apy_kemi_exec_func_54, NULL}, {sr_apy_kemi_exec_func_55, NULL}, + {sr_apy_kemi_exec_func_56, NULL}, {sr_apy_kemi_exec_func_57, NULL}, + {sr_apy_kemi_exec_func_58, NULL}, {sr_apy_kemi_exec_func_59, NULL}, + {sr_apy_kemi_exec_func_60, NULL}, {sr_apy_kemi_exec_func_61, NULL}, + {sr_apy_kemi_exec_func_62, NULL}, {sr_apy_kemi_exec_func_63, NULL}, + {sr_apy_kemi_exec_func_64, NULL}, {sr_apy_kemi_exec_func_65, NULL}, + {sr_apy_kemi_exec_func_66, NULL}, {sr_apy_kemi_exec_func_67, NULL}, + {sr_apy_kemi_exec_func_68, NULL}, {sr_apy_kemi_exec_func_69, NULL}, + {sr_apy_kemi_exec_func_70, NULL}, {sr_apy_kemi_exec_func_71, NULL}, + {sr_apy_kemi_exec_func_72, NULL}, {sr_apy_kemi_exec_func_73, NULL}, + {sr_apy_kemi_exec_func_74, NULL}, {sr_apy_kemi_exec_func_75, NULL}, + {sr_apy_kemi_exec_func_76, NULL}, {sr_apy_kemi_exec_func_77, NULL}, + {sr_apy_kemi_exec_func_78, NULL}, {sr_apy_kemi_exec_func_79, NULL}, + {sr_apy_kemi_exec_func_80, NULL}, {sr_apy_kemi_exec_func_81, NULL}, + {sr_apy_kemi_exec_func_82, NULL}, {sr_apy_kemi_exec_func_83, NULL}, + {sr_apy_kemi_exec_func_84, NULL}, {sr_apy_kemi_exec_func_85, NULL}, + {sr_apy_kemi_exec_func_86, NULL}, {sr_apy_kemi_exec_func_87, NULL}, + {sr_apy_kemi_exec_func_88, NULL}, {sr_apy_kemi_exec_func_89, NULL}, + {sr_apy_kemi_exec_func_90, NULL}, {sr_apy_kemi_exec_func_91, NULL}, + {sr_apy_kemi_exec_func_92, NULL}, {sr_apy_kemi_exec_func_93, NULL}, + {sr_apy_kemi_exec_func_94, NULL}, {sr_apy_kemi_exec_func_95, NULL}, + {sr_apy_kemi_exec_func_96, NULL}, {sr_apy_kemi_exec_func_97, NULL}, + {sr_apy_kemi_exec_func_98, NULL}, {sr_apy_kemi_exec_func_99, NULL}, + {sr_apy_kemi_exec_func_100, NULL}, {sr_apy_kemi_exec_func_101, NULL}, + {sr_apy_kemi_exec_func_102, NULL}, {sr_apy_kemi_exec_func_103, NULL}, + {sr_apy_kemi_exec_func_104, NULL}, {sr_apy_kemi_exec_func_105, NULL}, + {sr_apy_kemi_exec_func_106, NULL}, {sr_apy_kemi_exec_func_107, NULL}, + {sr_apy_kemi_exec_func_108, NULL}, {sr_apy_kemi_exec_func_109, NULL}, + {sr_apy_kemi_exec_func_110, NULL}, {sr_apy_kemi_exec_func_111, NULL}, + {sr_apy_kemi_exec_func_112, NULL}, {sr_apy_kemi_exec_func_113, NULL}, + {sr_apy_kemi_exec_func_114, NULL}, {sr_apy_kemi_exec_func_115, NULL}, + {sr_apy_kemi_exec_func_116, NULL}, {sr_apy_kemi_exec_func_117, NULL}, + {sr_apy_kemi_exec_func_118, NULL}, {sr_apy_kemi_exec_func_119, NULL}, + {sr_apy_kemi_exec_func_120, NULL}, {sr_apy_kemi_exec_func_121, NULL}, + {sr_apy_kemi_exec_func_122, NULL}, {sr_apy_kemi_exec_func_123, NULL}, + {sr_apy_kemi_exec_func_124, NULL}, {sr_apy_kemi_exec_func_125, NULL}, + {sr_apy_kemi_exec_func_126, NULL}, {sr_apy_kemi_exec_func_127, NULL}, + {sr_apy_kemi_exec_func_128, NULL}, {sr_apy_kemi_exec_func_129, NULL}, + {sr_apy_kemi_exec_func_130, NULL}, {sr_apy_kemi_exec_func_131, NULL}, + {sr_apy_kemi_exec_func_132, NULL}, {sr_apy_kemi_exec_func_133, NULL}, + {sr_apy_kemi_exec_func_134, NULL}, {sr_apy_kemi_exec_func_135, NULL}, + {sr_apy_kemi_exec_func_136, NULL}, {sr_apy_kemi_exec_func_137, NULL}, + {sr_apy_kemi_exec_func_138, NULL}, {sr_apy_kemi_exec_func_139, NULL}, + {sr_apy_kemi_exec_func_140, NULL}, {sr_apy_kemi_exec_func_141, NULL}, + {sr_apy_kemi_exec_func_142, NULL}, {sr_apy_kemi_exec_func_143, NULL}, + {sr_apy_kemi_exec_func_144, NULL}, {sr_apy_kemi_exec_func_145, NULL}, + {sr_apy_kemi_exec_func_146, NULL}, {sr_apy_kemi_exec_func_147, NULL}, + {sr_apy_kemi_exec_func_148, NULL}, {sr_apy_kemi_exec_func_149, NULL}, + {sr_apy_kemi_exec_func_150, NULL}, {sr_apy_kemi_exec_func_151, NULL}, + {sr_apy_kemi_exec_func_152, NULL}, {sr_apy_kemi_exec_func_153, NULL}, + {sr_apy_kemi_exec_func_154, NULL}, {sr_apy_kemi_exec_func_155, NULL}, + {sr_apy_kemi_exec_func_156, NULL}, {sr_apy_kemi_exec_func_157, NULL}, + {sr_apy_kemi_exec_func_158, NULL}, {sr_apy_kemi_exec_func_159, NULL}, + {sr_apy_kemi_exec_func_160, NULL}, {sr_apy_kemi_exec_func_161, NULL}, + {sr_apy_kemi_exec_func_162, NULL}, {sr_apy_kemi_exec_func_163, NULL}, + {sr_apy_kemi_exec_func_164, NULL}, {sr_apy_kemi_exec_func_165, NULL}, + {sr_apy_kemi_exec_func_166, NULL}, {sr_apy_kemi_exec_func_167, NULL}, + {sr_apy_kemi_exec_func_168, NULL}, {sr_apy_kemi_exec_func_169, NULL}, + {sr_apy_kemi_exec_func_170, NULL}, {sr_apy_kemi_exec_func_171, NULL}, + {sr_apy_kemi_exec_func_172, NULL}, {sr_apy_kemi_exec_func_173, NULL}, + {sr_apy_kemi_exec_func_174, NULL}, {sr_apy_kemi_exec_func_175, NULL}, + {sr_apy_kemi_exec_func_176, NULL}, {sr_apy_kemi_exec_func_177, NULL}, + {sr_apy_kemi_exec_func_178, NULL}, {sr_apy_kemi_exec_func_179, NULL}, + {sr_apy_kemi_exec_func_180, NULL}, {sr_apy_kemi_exec_func_181, NULL}, + {sr_apy_kemi_exec_func_182, NULL}, {sr_apy_kemi_exec_func_183, NULL}, + {sr_apy_kemi_exec_func_184, NULL}, {sr_apy_kemi_exec_func_185, NULL}, + {sr_apy_kemi_exec_func_186, NULL}, {sr_apy_kemi_exec_func_187, NULL}, + {sr_apy_kemi_exec_func_188, NULL}, {sr_apy_kemi_exec_func_189, NULL}, + {sr_apy_kemi_exec_func_190, NULL}, {sr_apy_kemi_exec_func_191, NULL}, + {sr_apy_kemi_exec_func_192, NULL}, {sr_apy_kemi_exec_func_193, NULL}, + {sr_apy_kemi_exec_func_194, NULL}, {sr_apy_kemi_exec_func_195, NULL}, + {sr_apy_kemi_exec_func_196, NULL}, {sr_apy_kemi_exec_func_197, NULL}, + {sr_apy_kemi_exec_func_198, NULL}, {sr_apy_kemi_exec_func_199, NULL}, + {sr_apy_kemi_exec_func_200, NULL}, {sr_apy_kemi_exec_func_201, NULL}, + {sr_apy_kemi_exec_func_202, NULL}, {sr_apy_kemi_exec_func_203, NULL}, + {sr_apy_kemi_exec_func_204, NULL}, {sr_apy_kemi_exec_func_205, NULL}, + {sr_apy_kemi_exec_func_206, NULL}, {sr_apy_kemi_exec_func_207, NULL}, + {sr_apy_kemi_exec_func_208, NULL}, {sr_apy_kemi_exec_func_209, NULL}, + {sr_apy_kemi_exec_func_210, NULL}, {sr_apy_kemi_exec_func_211, NULL}, + {sr_apy_kemi_exec_func_212, NULL}, {sr_apy_kemi_exec_func_213, NULL}, + {sr_apy_kemi_exec_func_214, NULL}, {sr_apy_kemi_exec_func_215, NULL}, + {sr_apy_kemi_exec_func_216, NULL}, {sr_apy_kemi_exec_func_217, NULL}, + {sr_apy_kemi_exec_func_218, NULL}, {sr_apy_kemi_exec_func_219, NULL}, + {sr_apy_kemi_exec_func_220, NULL}, {sr_apy_kemi_exec_func_221, NULL}, + {sr_apy_kemi_exec_func_222, NULL}, {sr_apy_kemi_exec_func_223, NULL}, + {sr_apy_kemi_exec_func_224, NULL}, {sr_apy_kemi_exec_func_225, NULL}, + {sr_apy_kemi_exec_func_226, NULL}, {sr_apy_kemi_exec_func_227, NULL}, + {sr_apy_kemi_exec_func_228, NULL}, {sr_apy_kemi_exec_func_229, NULL}, + {sr_apy_kemi_exec_func_230, NULL}, {sr_apy_kemi_exec_func_231, NULL}, + {sr_apy_kemi_exec_func_232, NULL}, {sr_apy_kemi_exec_func_233, NULL}, + {sr_apy_kemi_exec_func_234, NULL}, {sr_apy_kemi_exec_func_235, NULL}, + {sr_apy_kemi_exec_func_236, NULL}, {sr_apy_kemi_exec_func_237, NULL}, + {sr_apy_kemi_exec_func_238, NULL}, {sr_apy_kemi_exec_func_239, NULL}, + {sr_apy_kemi_exec_func_240, NULL}, {sr_apy_kemi_exec_func_241, NULL}, + {sr_apy_kemi_exec_func_242, NULL}, {sr_apy_kemi_exec_func_243, NULL}, + {sr_apy_kemi_exec_func_244, NULL}, {sr_apy_kemi_exec_func_245, NULL}, + {sr_apy_kemi_exec_func_246, NULL}, {sr_apy_kemi_exec_func_247, NULL}, + {sr_apy_kemi_exec_func_248, NULL}, {sr_apy_kemi_exec_func_249, NULL}, + {sr_apy_kemi_exec_func_250, NULL}, {sr_apy_kemi_exec_func_251, NULL}, + {sr_apy_kemi_exec_func_252, NULL}, {sr_apy_kemi_exec_func_253, NULL}, + {sr_apy_kemi_exec_func_254, NULL}, {sr_apy_kemi_exec_func_255, NULL}, + {sr_apy_kemi_exec_func_256, NULL}, {sr_apy_kemi_exec_func_257, NULL}, + {sr_apy_kemi_exec_func_258, NULL}, {sr_apy_kemi_exec_func_259, NULL}, + {sr_apy_kemi_exec_func_260, NULL}, {sr_apy_kemi_exec_func_261, NULL}, + {sr_apy_kemi_exec_func_262, NULL}, {sr_apy_kemi_exec_func_263, NULL}, + {sr_apy_kemi_exec_func_264, NULL}, {sr_apy_kemi_exec_func_265, NULL}, + {sr_apy_kemi_exec_func_266, NULL}, {sr_apy_kemi_exec_func_267, NULL}, + {sr_apy_kemi_exec_func_268, NULL}, {sr_apy_kemi_exec_func_269, NULL}, + {sr_apy_kemi_exec_func_270, NULL}, {sr_apy_kemi_exec_func_271, NULL}, + {sr_apy_kemi_exec_func_272, NULL}, {sr_apy_kemi_exec_func_273, NULL}, + {sr_apy_kemi_exec_func_274, NULL}, {sr_apy_kemi_exec_func_275, NULL}, + {sr_apy_kemi_exec_func_276, NULL}, {sr_apy_kemi_exec_func_277, NULL}, + {sr_apy_kemi_exec_func_278, NULL}, {sr_apy_kemi_exec_func_279, NULL}, + {sr_apy_kemi_exec_func_280, NULL}, {sr_apy_kemi_exec_func_281, NULL}, + {sr_apy_kemi_exec_func_282, NULL}, {sr_apy_kemi_exec_func_283, NULL}, + {sr_apy_kemi_exec_func_284, NULL}, {sr_apy_kemi_exec_func_285, NULL}, + {sr_apy_kemi_exec_func_286, NULL}, {sr_apy_kemi_exec_func_287, NULL}, + {sr_apy_kemi_exec_func_288, NULL}, {sr_apy_kemi_exec_func_289, NULL}, + {sr_apy_kemi_exec_func_290, NULL}, {sr_apy_kemi_exec_func_291, NULL}, + {sr_apy_kemi_exec_func_292, NULL}, {sr_apy_kemi_exec_func_293, NULL}, + {sr_apy_kemi_exec_func_294, NULL}, {sr_apy_kemi_exec_func_295, NULL}, + {sr_apy_kemi_exec_func_296, NULL}, {sr_apy_kemi_exec_func_297, NULL}, + {sr_apy_kemi_exec_func_298, NULL}, {sr_apy_kemi_exec_func_299, NULL}, + {sr_apy_kemi_exec_func_300, NULL}, {sr_apy_kemi_exec_func_301, NULL}, + {sr_apy_kemi_exec_func_302, NULL}, {sr_apy_kemi_exec_func_303, NULL}, + {sr_apy_kemi_exec_func_304, NULL}, {sr_apy_kemi_exec_func_305, NULL}, + {sr_apy_kemi_exec_func_306, NULL}, {sr_apy_kemi_exec_func_307, NULL}, + {sr_apy_kemi_exec_func_308, NULL}, {sr_apy_kemi_exec_func_309, NULL}, + {sr_apy_kemi_exec_func_310, NULL}, {sr_apy_kemi_exec_func_311, NULL}, + {sr_apy_kemi_exec_func_312, NULL}, {sr_apy_kemi_exec_func_313, NULL}, + {sr_apy_kemi_exec_func_314, NULL}, {sr_apy_kemi_exec_func_315, NULL}, + {sr_apy_kemi_exec_func_316, NULL}, {sr_apy_kemi_exec_func_317, NULL}, + {sr_apy_kemi_exec_func_318, NULL}, {sr_apy_kemi_exec_func_319, NULL}, + {sr_apy_kemi_exec_func_320, NULL}, {sr_apy_kemi_exec_func_321, NULL}, + {sr_apy_kemi_exec_func_322, NULL}, {sr_apy_kemi_exec_func_323, NULL}, + {sr_apy_kemi_exec_func_324, NULL}, {sr_apy_kemi_exec_func_325, NULL}, + {sr_apy_kemi_exec_func_326, NULL}, {sr_apy_kemi_exec_func_327, NULL}, + {sr_apy_kemi_exec_func_328, NULL}, {sr_apy_kemi_exec_func_329, NULL}, + {sr_apy_kemi_exec_func_330, NULL}, {sr_apy_kemi_exec_func_331, NULL}, + {sr_apy_kemi_exec_func_332, NULL}, {sr_apy_kemi_exec_func_333, NULL}, + {sr_apy_kemi_exec_func_334, NULL}, {sr_apy_kemi_exec_func_335, NULL}, + {sr_apy_kemi_exec_func_336, NULL}, {sr_apy_kemi_exec_func_337, NULL}, + {sr_apy_kemi_exec_func_338, NULL}, {sr_apy_kemi_exec_func_339, NULL}, + {sr_apy_kemi_exec_func_340, NULL}, {sr_apy_kemi_exec_func_341, NULL}, + {sr_apy_kemi_exec_func_342, NULL}, {sr_apy_kemi_exec_func_343, NULL}, + {sr_apy_kemi_exec_func_344, NULL}, {sr_apy_kemi_exec_func_345, NULL}, + {sr_apy_kemi_exec_func_346, NULL}, {sr_apy_kemi_exec_func_347, NULL}, + {sr_apy_kemi_exec_func_348, NULL}, {sr_apy_kemi_exec_func_349, NULL}, + {sr_apy_kemi_exec_func_350, NULL}, {sr_apy_kemi_exec_func_351, NULL}, + {sr_apy_kemi_exec_func_352, NULL}, {sr_apy_kemi_exec_func_353, NULL}, + {sr_apy_kemi_exec_func_354, NULL}, {sr_apy_kemi_exec_func_355, NULL}, + {sr_apy_kemi_exec_func_356, NULL}, {sr_apy_kemi_exec_func_357, NULL}, + {sr_apy_kemi_exec_func_358, NULL}, {sr_apy_kemi_exec_func_359, NULL}, + {sr_apy_kemi_exec_func_360, NULL}, {sr_apy_kemi_exec_func_361, NULL}, + {sr_apy_kemi_exec_func_362, NULL}, {sr_apy_kemi_exec_func_363, NULL}, + {sr_apy_kemi_exec_func_364, NULL}, {sr_apy_kemi_exec_func_365, NULL}, + {sr_apy_kemi_exec_func_366, NULL}, {sr_apy_kemi_exec_func_367, NULL}, + {sr_apy_kemi_exec_func_368, NULL}, {sr_apy_kemi_exec_func_369, NULL}, + {sr_apy_kemi_exec_func_370, NULL}, {sr_apy_kemi_exec_func_371, NULL}, + {sr_apy_kemi_exec_func_372, NULL}, {sr_apy_kemi_exec_func_373, NULL}, + {sr_apy_kemi_exec_func_374, NULL}, {sr_apy_kemi_exec_func_375, NULL}, + {sr_apy_kemi_exec_func_376, NULL}, {sr_apy_kemi_exec_func_377, NULL}, + {sr_apy_kemi_exec_func_378, NULL}, {sr_apy_kemi_exec_func_379, NULL}, + {sr_apy_kemi_exec_func_380, NULL}, {sr_apy_kemi_exec_func_381, NULL}, + {sr_apy_kemi_exec_func_382, NULL}, {sr_apy_kemi_exec_func_383, NULL}, + {sr_apy_kemi_exec_func_384, NULL}, {sr_apy_kemi_exec_func_385, NULL}, + {sr_apy_kemi_exec_func_386, NULL}, {sr_apy_kemi_exec_func_387, NULL}, + {sr_apy_kemi_exec_func_388, NULL}, {sr_apy_kemi_exec_func_389, NULL}, + {sr_apy_kemi_exec_func_390, NULL}, {sr_apy_kemi_exec_func_391, NULL}, + {sr_apy_kemi_exec_func_392, NULL}, {sr_apy_kemi_exec_func_393, NULL}, + {sr_apy_kemi_exec_func_394, NULL}, {sr_apy_kemi_exec_func_395, NULL}, + {sr_apy_kemi_exec_func_396, NULL}, {sr_apy_kemi_exec_func_397, NULL}, + {sr_apy_kemi_exec_func_398, NULL}, {sr_apy_kemi_exec_func_399, NULL}, + {sr_apy_kemi_exec_func_400, NULL}, {sr_apy_kemi_exec_func_401, NULL}, + {sr_apy_kemi_exec_func_402, NULL}, {sr_apy_kemi_exec_func_403, NULL}, + {sr_apy_kemi_exec_func_404, NULL}, {sr_apy_kemi_exec_func_405, NULL}, + {sr_apy_kemi_exec_func_406, NULL}, {sr_apy_kemi_exec_func_407, NULL}, + {sr_apy_kemi_exec_func_408, NULL}, {sr_apy_kemi_exec_func_409, NULL}, + {sr_apy_kemi_exec_func_410, NULL}, {sr_apy_kemi_exec_func_411, NULL}, + {sr_apy_kemi_exec_func_412, NULL}, {sr_apy_kemi_exec_func_413, NULL}, + {sr_apy_kemi_exec_func_414, NULL}, {sr_apy_kemi_exec_func_415, NULL}, + {sr_apy_kemi_exec_func_416, NULL}, {sr_apy_kemi_exec_func_417, NULL}, + {sr_apy_kemi_exec_func_418, NULL}, {sr_apy_kemi_exec_func_419, NULL}, + {sr_apy_kemi_exec_func_420, NULL}, {sr_apy_kemi_exec_func_421, NULL}, + {sr_apy_kemi_exec_func_422, NULL}, {sr_apy_kemi_exec_func_423, NULL}, + {sr_apy_kemi_exec_func_424, NULL}, {sr_apy_kemi_exec_func_425, NULL}, + {sr_apy_kemi_exec_func_426, NULL}, {sr_apy_kemi_exec_func_427, NULL}, + {sr_apy_kemi_exec_func_428, NULL}, {sr_apy_kemi_exec_func_429, NULL}, + {sr_apy_kemi_exec_func_430, NULL}, {sr_apy_kemi_exec_func_431, NULL}, + {sr_apy_kemi_exec_func_432, NULL}, {sr_apy_kemi_exec_func_433, NULL}, + {sr_apy_kemi_exec_func_434, NULL}, {sr_apy_kemi_exec_func_435, NULL}, + {sr_apy_kemi_exec_func_436, NULL}, {sr_apy_kemi_exec_func_437, NULL}, + {sr_apy_kemi_exec_func_438, NULL}, {sr_apy_kemi_exec_func_439, NULL}, + {sr_apy_kemi_exec_func_440, NULL}, {sr_apy_kemi_exec_func_441, NULL}, + {sr_apy_kemi_exec_func_442, NULL}, {sr_apy_kemi_exec_func_443, NULL}, + {sr_apy_kemi_exec_func_444, NULL}, {sr_apy_kemi_exec_func_445, NULL}, + {sr_apy_kemi_exec_func_446, NULL}, {sr_apy_kemi_exec_func_447, NULL}, + {sr_apy_kemi_exec_func_448, NULL}, {sr_apy_kemi_exec_func_449, NULL}, + {sr_apy_kemi_exec_func_450, NULL}, {sr_apy_kemi_exec_func_451, NULL}, + {sr_apy_kemi_exec_func_452, NULL}, {sr_apy_kemi_exec_func_453, NULL}, + {sr_apy_kemi_exec_func_454, NULL}, {sr_apy_kemi_exec_func_455, NULL}, + {sr_apy_kemi_exec_func_456, NULL}, {sr_apy_kemi_exec_func_457, NULL}, + {sr_apy_kemi_exec_func_458, NULL}, {sr_apy_kemi_exec_func_459, NULL}, + {sr_apy_kemi_exec_func_460, NULL}, {sr_apy_kemi_exec_func_461, NULL}, + {sr_apy_kemi_exec_func_462, NULL}, {sr_apy_kemi_exec_func_463, NULL}, + {sr_apy_kemi_exec_func_464, NULL}, {sr_apy_kemi_exec_func_465, NULL}, + {sr_apy_kemi_exec_func_466, NULL}, {sr_apy_kemi_exec_func_467, NULL}, + {sr_apy_kemi_exec_func_468, NULL}, {sr_apy_kemi_exec_func_469, NULL}, + {sr_apy_kemi_exec_func_470, NULL}, {sr_apy_kemi_exec_func_471, NULL}, + {sr_apy_kemi_exec_func_472, NULL}, {sr_apy_kemi_exec_func_473, NULL}, + {sr_apy_kemi_exec_func_474, NULL}, {sr_apy_kemi_exec_func_475, NULL}, + {sr_apy_kemi_exec_func_476, NULL}, {sr_apy_kemi_exec_func_477, NULL}, + {sr_apy_kemi_exec_func_478, NULL}, {sr_apy_kemi_exec_func_479, NULL}, + {sr_apy_kemi_exec_func_480, NULL}, {sr_apy_kemi_exec_func_481, NULL}, + {sr_apy_kemi_exec_func_482, NULL}, {sr_apy_kemi_exec_func_483, NULL}, + {sr_apy_kemi_exec_func_484, NULL}, {sr_apy_kemi_exec_func_485, NULL}, + {sr_apy_kemi_exec_func_486, NULL}, {sr_apy_kemi_exec_func_487, NULL}, + {sr_apy_kemi_exec_func_488, NULL}, {sr_apy_kemi_exec_func_489, NULL}, + {sr_apy_kemi_exec_func_490, NULL}, {sr_apy_kemi_exec_func_491, NULL}, + {sr_apy_kemi_exec_func_492, NULL}, {sr_apy_kemi_exec_func_493, NULL}, + {sr_apy_kemi_exec_func_494, NULL}, {sr_apy_kemi_exec_func_495, NULL}, + {sr_apy_kemi_exec_func_496, NULL}, {sr_apy_kemi_exec_func_497, NULL}, + {sr_apy_kemi_exec_func_498, NULL}, {sr_apy_kemi_exec_func_499, NULL}, + {sr_apy_kemi_exec_func_500, NULL}, {sr_apy_kemi_exec_func_501, NULL}, + {sr_apy_kemi_exec_func_502, NULL}, {sr_apy_kemi_exec_func_503, NULL}, + {sr_apy_kemi_exec_func_504, NULL}, {sr_apy_kemi_exec_func_505, NULL}, + {sr_apy_kemi_exec_func_506, NULL}, {sr_apy_kemi_exec_func_507, NULL}, + {sr_apy_kemi_exec_func_508, NULL}, {sr_apy_kemi_exec_func_509, NULL}, + {sr_apy_kemi_exec_func_510, NULL}, {sr_apy_kemi_exec_func_511, NULL}, + {sr_apy_kemi_exec_func_512, NULL}, {sr_apy_kemi_exec_func_513, NULL}, + {sr_apy_kemi_exec_func_514, NULL}, {sr_apy_kemi_exec_func_515, NULL}, + {sr_apy_kemi_exec_func_516, NULL}, {sr_apy_kemi_exec_func_517, NULL}, + {sr_apy_kemi_exec_func_518, NULL}, {sr_apy_kemi_exec_func_519, NULL}, + {sr_apy_kemi_exec_func_520, NULL}, {sr_apy_kemi_exec_func_521, NULL}, + {sr_apy_kemi_exec_func_522, NULL}, {sr_apy_kemi_exec_func_523, NULL}, + {sr_apy_kemi_exec_func_524, NULL}, {sr_apy_kemi_exec_func_525, NULL}, + {sr_apy_kemi_exec_func_526, NULL}, {sr_apy_kemi_exec_func_527, NULL}, + {sr_apy_kemi_exec_func_528, NULL}, {sr_apy_kemi_exec_func_529, NULL}, + {sr_apy_kemi_exec_func_530, NULL}, {sr_apy_kemi_exec_func_531, NULL}, + {sr_apy_kemi_exec_func_532, NULL}, {sr_apy_kemi_exec_func_533, NULL}, + {sr_apy_kemi_exec_func_534, NULL}, {sr_apy_kemi_exec_func_535, NULL}, + {sr_apy_kemi_exec_func_536, NULL}, {sr_apy_kemi_exec_func_537, NULL}, + {sr_apy_kemi_exec_func_538, NULL}, {sr_apy_kemi_exec_func_539, NULL}, + {sr_apy_kemi_exec_func_540, NULL}, {sr_apy_kemi_exec_func_541, NULL}, + {sr_apy_kemi_exec_func_542, NULL}, {sr_apy_kemi_exec_func_543, NULL}, + {sr_apy_kemi_exec_func_544, NULL}, {sr_apy_kemi_exec_func_545, NULL}, + {sr_apy_kemi_exec_func_546, NULL}, {sr_apy_kemi_exec_func_547, NULL}, + {sr_apy_kemi_exec_func_548, NULL}, {sr_apy_kemi_exec_func_549, NULL}, + {sr_apy_kemi_exec_func_550, NULL}, {sr_apy_kemi_exec_func_551, NULL}, + {sr_apy_kemi_exec_func_552, NULL}, {sr_apy_kemi_exec_func_553, NULL}, + {sr_apy_kemi_exec_func_554, NULL}, {sr_apy_kemi_exec_func_555, NULL}, + {sr_apy_kemi_exec_func_556, NULL}, {sr_apy_kemi_exec_func_557, NULL}, + {sr_apy_kemi_exec_func_558, NULL}, {sr_apy_kemi_exec_func_559, NULL}, + {sr_apy_kemi_exec_func_560, NULL}, {sr_apy_kemi_exec_func_561, NULL}, + {sr_apy_kemi_exec_func_562, NULL}, {sr_apy_kemi_exec_func_563, NULL}, + {sr_apy_kemi_exec_func_564, NULL}, {sr_apy_kemi_exec_func_565, NULL}, + {sr_apy_kemi_exec_func_566, NULL}, {sr_apy_kemi_exec_func_567, NULL}, + {sr_apy_kemi_exec_func_568, NULL}, {sr_apy_kemi_exec_func_569, NULL}, + {sr_apy_kemi_exec_func_570, NULL}, {sr_apy_kemi_exec_func_571, NULL}, + {sr_apy_kemi_exec_func_572, NULL}, {sr_apy_kemi_exec_func_573, NULL}, + {sr_apy_kemi_exec_func_574, NULL}, {sr_apy_kemi_exec_func_575, NULL}, + {sr_apy_kemi_exec_func_576, NULL}, {sr_apy_kemi_exec_func_577, NULL}, + {sr_apy_kemi_exec_func_578, NULL}, {sr_apy_kemi_exec_func_579, NULL}, + {sr_apy_kemi_exec_func_580, NULL}, {sr_apy_kemi_exec_func_581, NULL}, + {sr_apy_kemi_exec_func_582, NULL}, {sr_apy_kemi_exec_func_583, NULL}, + {sr_apy_kemi_exec_func_584, NULL}, {sr_apy_kemi_exec_func_585, NULL}, + {sr_apy_kemi_exec_func_586, NULL}, {sr_apy_kemi_exec_func_587, NULL}, + {sr_apy_kemi_exec_func_588, NULL}, {sr_apy_kemi_exec_func_589, NULL}, + {sr_apy_kemi_exec_func_590, NULL}, {sr_apy_kemi_exec_func_591, NULL}, + {sr_apy_kemi_exec_func_592, NULL}, {sr_apy_kemi_exec_func_593, NULL}, + {sr_apy_kemi_exec_func_594, NULL}, {sr_apy_kemi_exec_func_595, NULL}, + {sr_apy_kemi_exec_func_596, NULL}, {sr_apy_kemi_exec_func_597, NULL}, + {sr_apy_kemi_exec_func_598, NULL}, {sr_apy_kemi_exec_func_599, NULL}, + {sr_apy_kemi_exec_func_600, NULL}, {sr_apy_kemi_exec_func_601, NULL}, + {sr_apy_kemi_exec_func_602, NULL}, {sr_apy_kemi_exec_func_603, NULL}, + {sr_apy_kemi_exec_func_604, NULL}, {sr_apy_kemi_exec_func_605, NULL}, + {sr_apy_kemi_exec_func_606, NULL}, {sr_apy_kemi_exec_func_607, NULL}, + {sr_apy_kemi_exec_func_608, NULL}, {sr_apy_kemi_exec_func_609, NULL}, + {sr_apy_kemi_exec_func_610, NULL}, {sr_apy_kemi_exec_func_611, NULL}, + {sr_apy_kemi_exec_func_612, NULL}, {sr_apy_kemi_exec_func_613, NULL}, + {sr_apy_kemi_exec_func_614, NULL}, {sr_apy_kemi_exec_func_615, NULL}, + {sr_apy_kemi_exec_func_616, NULL}, {sr_apy_kemi_exec_func_617, NULL}, + {sr_apy_kemi_exec_func_618, NULL}, {sr_apy_kemi_exec_func_619, NULL}, + {sr_apy_kemi_exec_func_620, NULL}, {sr_apy_kemi_exec_func_621, NULL}, + {sr_apy_kemi_exec_func_622, NULL}, {sr_apy_kemi_exec_func_623, NULL}, + {sr_apy_kemi_exec_func_624, NULL}, {sr_apy_kemi_exec_func_625, NULL}, + {sr_apy_kemi_exec_func_626, NULL}, {sr_apy_kemi_exec_func_627, NULL}, + {sr_apy_kemi_exec_func_628, NULL}, {sr_apy_kemi_exec_func_629, NULL}, + {sr_apy_kemi_exec_func_630, NULL}, {sr_apy_kemi_exec_func_631, NULL}, + {sr_apy_kemi_exec_func_632, NULL}, {sr_apy_kemi_exec_func_633, NULL}, + {sr_apy_kemi_exec_func_634, NULL}, {sr_apy_kemi_exec_func_635, NULL}, + {sr_apy_kemi_exec_func_636, NULL}, {sr_apy_kemi_exec_func_637, NULL}, + {sr_apy_kemi_exec_func_638, NULL}, {sr_apy_kemi_exec_func_639, NULL}, + {sr_apy_kemi_exec_func_640, NULL}, {sr_apy_kemi_exec_func_641, NULL}, + {sr_apy_kemi_exec_func_642, NULL}, {sr_apy_kemi_exec_func_643, NULL}, + {sr_apy_kemi_exec_func_644, NULL}, {sr_apy_kemi_exec_func_645, NULL}, + {sr_apy_kemi_exec_func_646, NULL}, {sr_apy_kemi_exec_func_647, NULL}, + {sr_apy_kemi_exec_func_648, NULL}, {sr_apy_kemi_exec_func_649, NULL}, + {sr_apy_kemi_exec_func_650, NULL}, {sr_apy_kemi_exec_func_651, NULL}, + {sr_apy_kemi_exec_func_652, NULL}, {sr_apy_kemi_exec_func_653, NULL}, + {sr_apy_kemi_exec_func_654, NULL}, {sr_apy_kemi_exec_func_655, NULL}, + {sr_apy_kemi_exec_func_656, NULL}, {sr_apy_kemi_exec_func_657, NULL}, + {sr_apy_kemi_exec_func_658, NULL}, {sr_apy_kemi_exec_func_659, NULL}, + {sr_apy_kemi_exec_func_660, NULL}, {sr_apy_kemi_exec_func_661, NULL}, + {sr_apy_kemi_exec_func_662, NULL}, {sr_apy_kemi_exec_func_663, NULL}, + {sr_apy_kemi_exec_func_664, NULL}, {sr_apy_kemi_exec_func_665, NULL}, + {sr_apy_kemi_exec_func_666, NULL}, {sr_apy_kemi_exec_func_667, NULL}, + {sr_apy_kemi_exec_func_668, NULL}, {sr_apy_kemi_exec_func_669, NULL}, + {sr_apy_kemi_exec_func_670, NULL}, {sr_apy_kemi_exec_func_671, NULL}, + {sr_apy_kemi_exec_func_672, NULL}, {sr_apy_kemi_exec_func_673, NULL}, + {sr_apy_kemi_exec_func_674, NULL}, {sr_apy_kemi_exec_func_675, NULL}, + {sr_apy_kemi_exec_func_676, NULL}, {sr_apy_kemi_exec_func_677, NULL}, + {sr_apy_kemi_exec_func_678, NULL}, {sr_apy_kemi_exec_func_679, NULL}, + {sr_apy_kemi_exec_func_680, NULL}, {sr_apy_kemi_exec_func_681, NULL}, + {sr_apy_kemi_exec_func_682, NULL}, {sr_apy_kemi_exec_func_683, NULL}, + {sr_apy_kemi_exec_func_684, NULL}, {sr_apy_kemi_exec_func_685, NULL}, + {sr_apy_kemi_exec_func_686, NULL}, {sr_apy_kemi_exec_func_687, NULL}, + {sr_apy_kemi_exec_func_688, NULL}, {sr_apy_kemi_exec_func_689, NULL}, + {sr_apy_kemi_exec_func_690, NULL}, {sr_apy_kemi_exec_func_691, NULL}, + {sr_apy_kemi_exec_func_692, NULL}, {sr_apy_kemi_exec_func_693, NULL}, + {sr_apy_kemi_exec_func_694, NULL}, {sr_apy_kemi_exec_func_695, NULL}, + {sr_apy_kemi_exec_func_696, NULL}, {sr_apy_kemi_exec_func_697, NULL}, + {sr_apy_kemi_exec_func_698, NULL}, {sr_apy_kemi_exec_func_699, NULL}, + {sr_apy_kemi_exec_func_700, NULL}, {sr_apy_kemi_exec_func_701, NULL}, + {sr_apy_kemi_exec_func_702, NULL}, {sr_apy_kemi_exec_func_703, NULL}, + {sr_apy_kemi_exec_func_704, NULL}, {sr_apy_kemi_exec_func_705, NULL}, + {sr_apy_kemi_exec_func_706, NULL}, {sr_apy_kemi_exec_func_707, NULL}, + {sr_apy_kemi_exec_func_708, NULL}, {sr_apy_kemi_exec_func_709, NULL}, + {sr_apy_kemi_exec_func_710, NULL}, {sr_apy_kemi_exec_func_711, NULL}, + {sr_apy_kemi_exec_func_712, NULL}, {sr_apy_kemi_exec_func_713, NULL}, + {sr_apy_kemi_exec_func_714, NULL}, {sr_apy_kemi_exec_func_715, NULL}, + {sr_apy_kemi_exec_func_716, NULL}, {sr_apy_kemi_exec_func_717, NULL}, + {sr_apy_kemi_exec_func_718, NULL}, {sr_apy_kemi_exec_func_719, NULL}, + {sr_apy_kemi_exec_func_720, NULL}, {sr_apy_kemi_exec_func_721, NULL}, + {sr_apy_kemi_exec_func_722, NULL}, {sr_apy_kemi_exec_func_723, NULL}, + {sr_apy_kemi_exec_func_724, NULL}, {sr_apy_kemi_exec_func_725, NULL}, + {sr_apy_kemi_exec_func_726, NULL}, {sr_apy_kemi_exec_func_727, NULL}, + {sr_apy_kemi_exec_func_728, NULL}, {sr_apy_kemi_exec_func_729, NULL}, + {sr_apy_kemi_exec_func_730, NULL}, {sr_apy_kemi_exec_func_731, NULL}, + {sr_apy_kemi_exec_func_732, NULL}, {sr_apy_kemi_exec_func_733, NULL}, + {sr_apy_kemi_exec_func_734, NULL}, {sr_apy_kemi_exec_func_735, NULL}, + {sr_apy_kemi_exec_func_736, NULL}, {sr_apy_kemi_exec_func_737, NULL}, + {sr_apy_kemi_exec_func_738, NULL}, {sr_apy_kemi_exec_func_739, NULL}, + {sr_apy_kemi_exec_func_740, NULL}, {sr_apy_kemi_exec_func_741, NULL}, + {sr_apy_kemi_exec_func_742, NULL}, {sr_apy_kemi_exec_func_743, NULL}, + {sr_apy_kemi_exec_func_744, NULL}, {sr_apy_kemi_exec_func_745, NULL}, + {sr_apy_kemi_exec_func_746, NULL}, {sr_apy_kemi_exec_func_747, NULL}, + {sr_apy_kemi_exec_func_748, NULL}, {sr_apy_kemi_exec_func_749, NULL}, + {sr_apy_kemi_exec_func_750, NULL}, {sr_apy_kemi_exec_func_751, NULL}, + {sr_apy_kemi_exec_func_752, NULL}, {sr_apy_kemi_exec_func_753, NULL}, + {sr_apy_kemi_exec_func_754, NULL}, {sr_apy_kemi_exec_func_755, NULL}, + {sr_apy_kemi_exec_func_756, NULL}, {sr_apy_kemi_exec_func_757, NULL}, + {sr_apy_kemi_exec_func_758, NULL}, {sr_apy_kemi_exec_func_759, NULL}, + {sr_apy_kemi_exec_func_760, NULL}, {sr_apy_kemi_exec_func_761, NULL}, + {sr_apy_kemi_exec_func_762, NULL}, {sr_apy_kemi_exec_func_763, NULL}, + {sr_apy_kemi_exec_func_764, NULL}, {sr_apy_kemi_exec_func_765, NULL}, + {sr_apy_kemi_exec_func_766, NULL}, {sr_apy_kemi_exec_func_767, NULL}, + {sr_apy_kemi_exec_func_768, NULL}, {sr_apy_kemi_exec_func_769, NULL}, + {sr_apy_kemi_exec_func_770, NULL}, {sr_apy_kemi_exec_func_771, NULL}, + {sr_apy_kemi_exec_func_772, NULL}, {sr_apy_kemi_exec_func_773, NULL}, + {sr_apy_kemi_exec_func_774, NULL}, {sr_apy_kemi_exec_func_775, NULL}, + {sr_apy_kemi_exec_func_776, NULL}, {sr_apy_kemi_exec_func_777, NULL}, + {sr_apy_kemi_exec_func_778, NULL}, {sr_apy_kemi_exec_func_779, NULL}, + {sr_apy_kemi_exec_func_780, NULL}, {sr_apy_kemi_exec_func_781, NULL}, + {sr_apy_kemi_exec_func_782, NULL}, {sr_apy_kemi_exec_func_783, NULL}, + {sr_apy_kemi_exec_func_784, NULL}, {sr_apy_kemi_exec_func_785, NULL}, + {sr_apy_kemi_exec_func_786, NULL}, {sr_apy_kemi_exec_func_787, NULL}, + {sr_apy_kemi_exec_func_788, NULL}, {sr_apy_kemi_exec_func_789, NULL}, + {sr_apy_kemi_exec_func_790, NULL}, {sr_apy_kemi_exec_func_791, NULL}, + {sr_apy_kemi_exec_func_792, NULL}, {sr_apy_kemi_exec_func_793, NULL}, + {sr_apy_kemi_exec_func_794, NULL}, {sr_apy_kemi_exec_func_795, NULL}, + {sr_apy_kemi_exec_func_796, NULL}, {sr_apy_kemi_exec_func_797, NULL}, + {sr_apy_kemi_exec_func_798, NULL}, {sr_apy_kemi_exec_func_799, NULL}, + {sr_apy_kemi_exec_func_800, NULL}, {sr_apy_kemi_exec_func_801, NULL}, + {sr_apy_kemi_exec_func_802, NULL}, {sr_apy_kemi_exec_func_803, NULL}, + {sr_apy_kemi_exec_func_804, NULL}, {sr_apy_kemi_exec_func_805, NULL}, + {sr_apy_kemi_exec_func_806, NULL}, {sr_apy_kemi_exec_func_807, NULL}, + {sr_apy_kemi_exec_func_808, NULL}, {sr_apy_kemi_exec_func_809, NULL}, + {sr_apy_kemi_exec_func_810, NULL}, {sr_apy_kemi_exec_func_811, NULL}, + {sr_apy_kemi_exec_func_812, NULL}, {sr_apy_kemi_exec_func_813, NULL}, + {sr_apy_kemi_exec_func_814, NULL}, {sr_apy_kemi_exec_func_815, NULL}, + {sr_apy_kemi_exec_func_816, NULL}, {sr_apy_kemi_exec_func_817, NULL}, + {sr_apy_kemi_exec_func_818, NULL}, {sr_apy_kemi_exec_func_819, NULL}, + {sr_apy_kemi_exec_func_820, NULL}, {sr_apy_kemi_exec_func_821, NULL}, + {sr_apy_kemi_exec_func_822, NULL}, {sr_apy_kemi_exec_func_823, NULL}, + {sr_apy_kemi_exec_func_824, NULL}, {sr_apy_kemi_exec_func_825, NULL}, + {sr_apy_kemi_exec_func_826, NULL}, {sr_apy_kemi_exec_func_827, NULL}, + {sr_apy_kemi_exec_func_828, NULL}, {sr_apy_kemi_exec_func_829, NULL}, + {sr_apy_kemi_exec_func_830, NULL}, {sr_apy_kemi_exec_func_831, NULL}, + {sr_apy_kemi_exec_func_832, NULL}, {sr_apy_kemi_exec_func_833, NULL}, + {sr_apy_kemi_exec_func_834, NULL}, {sr_apy_kemi_exec_func_835, NULL}, + {sr_apy_kemi_exec_func_836, NULL}, {sr_apy_kemi_exec_func_837, NULL}, + {sr_apy_kemi_exec_func_838, NULL}, {sr_apy_kemi_exec_func_839, NULL}, + {sr_apy_kemi_exec_func_840, NULL}, {sr_apy_kemi_exec_func_841, NULL}, + {sr_apy_kemi_exec_func_842, NULL}, {sr_apy_kemi_exec_func_843, NULL}, + {sr_apy_kemi_exec_func_844, NULL}, {sr_apy_kemi_exec_func_845, NULL}, + {sr_apy_kemi_exec_func_846, NULL}, {sr_apy_kemi_exec_func_847, NULL}, + {sr_apy_kemi_exec_func_848, NULL}, {sr_apy_kemi_exec_func_849, NULL}, + {sr_apy_kemi_exec_func_850, NULL}, {sr_apy_kemi_exec_func_851, NULL}, + {sr_apy_kemi_exec_func_852, NULL}, {sr_apy_kemi_exec_func_853, NULL}, + {sr_apy_kemi_exec_func_854, NULL}, {sr_apy_kemi_exec_func_855, NULL}, + {sr_apy_kemi_exec_func_856, NULL}, {sr_apy_kemi_exec_func_857, NULL}, + {sr_apy_kemi_exec_func_858, NULL}, {sr_apy_kemi_exec_func_859, NULL}, + {sr_apy_kemi_exec_func_860, NULL}, {sr_apy_kemi_exec_func_861, NULL}, + {sr_apy_kemi_exec_func_862, NULL}, {sr_apy_kemi_exec_func_863, NULL}, + {sr_apy_kemi_exec_func_864, NULL}, {sr_apy_kemi_exec_func_865, NULL}, + {sr_apy_kemi_exec_func_866, NULL}, {sr_apy_kemi_exec_func_867, NULL}, + {sr_apy_kemi_exec_func_868, NULL}, {sr_apy_kemi_exec_func_869, NULL}, + {sr_apy_kemi_exec_func_870, NULL}, {sr_apy_kemi_exec_func_871, NULL}, + {sr_apy_kemi_exec_func_872, NULL}, {sr_apy_kemi_exec_func_873, NULL}, + {sr_apy_kemi_exec_func_874, NULL}, {sr_apy_kemi_exec_func_875, NULL}, + {sr_apy_kemi_exec_func_876, NULL}, {sr_apy_kemi_exec_func_877, NULL}, + {sr_apy_kemi_exec_func_878, NULL}, {sr_apy_kemi_exec_func_879, NULL}, + {sr_apy_kemi_exec_func_880, NULL}, {sr_apy_kemi_exec_func_881, NULL}, + {sr_apy_kemi_exec_func_882, NULL}, {sr_apy_kemi_exec_func_883, NULL}, + {sr_apy_kemi_exec_func_884, NULL}, {sr_apy_kemi_exec_func_885, NULL}, + {sr_apy_kemi_exec_func_886, NULL}, {sr_apy_kemi_exec_func_887, NULL}, + {sr_apy_kemi_exec_func_888, NULL}, {sr_apy_kemi_exec_func_889, NULL}, + {sr_apy_kemi_exec_func_890, NULL}, {sr_apy_kemi_exec_func_891, NULL}, + {sr_apy_kemi_exec_func_892, NULL}, {sr_apy_kemi_exec_func_893, NULL}, + {sr_apy_kemi_exec_func_894, NULL}, {sr_apy_kemi_exec_func_895, NULL}, + {sr_apy_kemi_exec_func_896, NULL}, {sr_apy_kemi_exec_func_897, NULL}, + {sr_apy_kemi_exec_func_898, NULL}, {sr_apy_kemi_exec_func_899, NULL}, + {sr_apy_kemi_exec_func_900, NULL}, {sr_apy_kemi_exec_func_901, NULL}, + {sr_apy_kemi_exec_func_902, NULL}, {sr_apy_kemi_exec_func_903, NULL}, + {sr_apy_kemi_exec_func_904, NULL}, {sr_apy_kemi_exec_func_905, NULL}, + {sr_apy_kemi_exec_func_906, NULL}, {sr_apy_kemi_exec_func_907, NULL}, + {sr_apy_kemi_exec_func_908, NULL}, {sr_apy_kemi_exec_func_909, NULL}, + {sr_apy_kemi_exec_func_910, NULL}, {sr_apy_kemi_exec_func_911, NULL}, + {sr_apy_kemi_exec_func_912, NULL}, {sr_apy_kemi_exec_func_913, NULL}, + {sr_apy_kemi_exec_func_914, NULL}, {sr_apy_kemi_exec_func_915, NULL}, + {sr_apy_kemi_exec_func_916, NULL}, {sr_apy_kemi_exec_func_917, NULL}, + {sr_apy_kemi_exec_func_918, NULL}, {sr_apy_kemi_exec_func_919, NULL}, + {sr_apy_kemi_exec_func_920, NULL}, {sr_apy_kemi_exec_func_921, NULL}, + {sr_apy_kemi_exec_func_922, NULL}, {sr_apy_kemi_exec_func_923, NULL}, + {sr_apy_kemi_exec_func_924, NULL}, {sr_apy_kemi_exec_func_925, NULL}, + {sr_apy_kemi_exec_func_926, NULL}, {sr_apy_kemi_exec_func_927, NULL}, + {sr_apy_kemi_exec_func_928, NULL}, {sr_apy_kemi_exec_func_929, NULL}, + {sr_apy_kemi_exec_func_930, NULL}, {sr_apy_kemi_exec_func_931, NULL}, + {sr_apy_kemi_exec_func_932, NULL}, {sr_apy_kemi_exec_func_933, NULL}, + {sr_apy_kemi_exec_func_934, NULL}, {sr_apy_kemi_exec_func_935, NULL}, + {sr_apy_kemi_exec_func_936, NULL}, {sr_apy_kemi_exec_func_937, NULL}, + {sr_apy_kemi_exec_func_938, NULL}, {sr_apy_kemi_exec_func_939, NULL}, + {sr_apy_kemi_exec_func_940, NULL}, {sr_apy_kemi_exec_func_941, NULL}, + {sr_apy_kemi_exec_func_942, NULL}, {sr_apy_kemi_exec_func_943, NULL}, + {sr_apy_kemi_exec_func_944, NULL}, {sr_apy_kemi_exec_func_945, NULL}, + {sr_apy_kemi_exec_func_946, NULL}, {sr_apy_kemi_exec_func_947, NULL}, + {sr_apy_kemi_exec_func_948, NULL}, {sr_apy_kemi_exec_func_949, NULL}, + {sr_apy_kemi_exec_func_950, NULL}, {sr_apy_kemi_exec_func_951, NULL}, + {sr_apy_kemi_exec_func_952, NULL}, {sr_apy_kemi_exec_func_953, NULL}, + {sr_apy_kemi_exec_func_954, NULL}, {sr_apy_kemi_exec_func_955, NULL}, + {sr_apy_kemi_exec_func_956, NULL}, {sr_apy_kemi_exec_func_957, NULL}, + {sr_apy_kemi_exec_func_958, NULL}, {sr_apy_kemi_exec_func_959, NULL}, + {sr_apy_kemi_exec_func_960, NULL}, {sr_apy_kemi_exec_func_961, NULL}, + {sr_apy_kemi_exec_func_962, NULL}, {sr_apy_kemi_exec_func_963, NULL}, + {sr_apy_kemi_exec_func_964, NULL}, {sr_apy_kemi_exec_func_965, NULL}, + {sr_apy_kemi_exec_func_966, NULL}, {sr_apy_kemi_exec_func_967, NULL}, + {sr_apy_kemi_exec_func_968, NULL}, {sr_apy_kemi_exec_func_969, NULL}, + {sr_apy_kemi_exec_func_970, NULL}, {sr_apy_kemi_exec_func_971, NULL}, + {sr_apy_kemi_exec_func_972, NULL}, {sr_apy_kemi_exec_func_973, NULL}, + {sr_apy_kemi_exec_func_974, NULL}, {sr_apy_kemi_exec_func_975, NULL}, + {sr_apy_kemi_exec_func_976, NULL}, {sr_apy_kemi_exec_func_977, NULL}, + {sr_apy_kemi_exec_func_978, NULL}, {sr_apy_kemi_exec_func_979, NULL}, + {sr_apy_kemi_exec_func_980, NULL}, {sr_apy_kemi_exec_func_981, NULL}, + {sr_apy_kemi_exec_func_982, NULL}, {sr_apy_kemi_exec_func_983, NULL}, + {sr_apy_kemi_exec_func_984, NULL}, {sr_apy_kemi_exec_func_985, NULL}, + {sr_apy_kemi_exec_func_986, NULL}, {sr_apy_kemi_exec_func_987, NULL}, + {sr_apy_kemi_exec_func_988, NULL}, {sr_apy_kemi_exec_func_989, NULL}, + {sr_apy_kemi_exec_func_990, NULL}, {sr_apy_kemi_exec_func_991, NULL}, + {sr_apy_kemi_exec_func_992, NULL}, {sr_apy_kemi_exec_func_993, NULL}, + {sr_apy_kemi_exec_func_994, NULL}, {sr_apy_kemi_exec_func_995, NULL}, + {sr_apy_kemi_exec_func_996, NULL}, {sr_apy_kemi_exec_func_997, NULL}, + {sr_apy_kemi_exec_func_998, NULL}, {sr_apy_kemi_exec_func_999, NULL}, + {sr_apy_kemi_exec_func_1000, NULL}, {sr_apy_kemi_exec_func_1001, NULL}, + {sr_apy_kemi_exec_func_1002, NULL}, {sr_apy_kemi_exec_func_1003, NULL}, + {sr_apy_kemi_exec_func_1004, NULL}, {sr_apy_kemi_exec_func_1005, NULL}, + {sr_apy_kemi_exec_func_1006, NULL}, {sr_apy_kemi_exec_func_1007, NULL}, + {sr_apy_kemi_exec_func_1008, NULL}, {sr_apy_kemi_exec_func_1009, NULL}, + {sr_apy_kemi_exec_func_1010, NULL}, {sr_apy_kemi_exec_func_1011, NULL}, + {sr_apy_kemi_exec_func_1012, NULL}, {sr_apy_kemi_exec_func_1013, NULL}, + {sr_apy_kemi_exec_func_1014, NULL}, {sr_apy_kemi_exec_func_1015, NULL}, + {sr_apy_kemi_exec_func_1016, NULL}, {sr_apy_kemi_exec_func_1017, NULL}, + {sr_apy_kemi_exec_func_1018, NULL}, {sr_apy_kemi_exec_func_1019, NULL}, + {sr_apy_kemi_exec_func_1020, NULL}, {sr_apy_kemi_exec_func_1021, NULL}, + {sr_apy_kemi_exec_func_1022, NULL}, {sr_apy_kemi_exec_func_1023, NULL}, + {NULL, NULL}}; /** * */ sr_kemi_t *sr_apy_kemi_export_get(int idx) { - if(idx<0 || idx>=SR_APY_KEMI_EXPORT_SIZE) + if(idx < 0 || idx >= SR_APY_KEMI_EXPORT_SIZE) return NULL; return _sr_apy_kemi_export_list[idx].ket; } @@ -9274,12 +8761,12 @@ sr_kemi_t *sr_apy_kemi_export_get(int idx) PyCFunction sr_apy_kemi_export_associate(sr_kemi_t *ket) { int i; - for(i=0; i #include "../../core/kemi.h" -#define SR_APY_KEMI_EXPORT_SIZE 1024 +#define SR_APY_KEMI_EXPORT_SIZE 1024 -typedef struct sr_apy_kemi_export { +typedef struct sr_apy_kemi_export +{ PyCFunction pfunc; sr_kemi_t *ket; } sr_apy_kemi_export_t; diff --git a/src/modules/app_python3/mod_Core.c b/src/modules/app_python3/mod_Core.c index c8963b60116..9e625b8cbbf 100644 --- a/src/modules/app_python3/mod_Core.c +++ b/src/modules/app_python3/mod_Core.c @@ -43,23 +43,12 @@ PyObject *_sr_apy_core_module = NULL; -PyMethodDef CoreMethods[] = { - {NULL, NULL, 0, NULL} -}; +PyMethodDef CoreMethods[] = {{NULL, NULL, 0, NULL}}; -static struct PyModuleDef Router_Core_moduledef = { - PyModuleDef_HEAD_INIT, - "Router.Core", - NULL, - -1, - CoreMethods, - NULL, - NULL, - NULL, - NULL -}; +static struct PyModuleDef Router_Core_moduledef = {PyModuleDef_HEAD_INIT, + "Router.Core", NULL, -1, CoreMethods, NULL, NULL, NULL, NULL}; -PyObject* get_core_module(void) +PyObject *get_core_module(void) { _sr_apy_core_module = PyModule_Create(&Router_Core_moduledef); @@ -67,7 +56,7 @@ PyObject* get_core_module(void) LM_ERR("Module 'Router.Core' has been initialized\n"); #endif - return _sr_apy_core_module; + return _sr_apy_core_module; } void destroy_mod_Core(void) @@ -76,5 +65,4 @@ void destroy_mod_Core(void) #ifdef WITH_EXTRA_DEBUG LM_ERR("Module 'Router.Core' has been destroyed\n"); #endif - } diff --git a/src/modules/app_python3/mod_Core.h b/src/modules/app_python3/mod_Core.h index a10920661c2..998cbde744b 100644 --- a/src/modules/app_python3/mod_Core.h +++ b/src/modules/app_python3/mod_Core.h @@ -20,8 +20,8 @@ * */ -#ifndef __API__MOD_CORE_H__ -#define __API__MOD_CORE_H__ +#ifndef __API__MOD_CORE_H__ +#define __API__MOD_CORE_H__ #include #include diff --git a/src/modules/app_python3/mod_Logger.c b/src/modules/app_python3/mod_Logger.c index 424ed31bc96..22e9a6bacea 100644 --- a/src/modules/app_python3/mod_Logger.c +++ b/src/modules/app_python3/mod_Logger.c @@ -51,7 +51,7 @@ static PyObject *logger_LM_GEN1(PyObject *self, PyObject *args) int log_level; char *msg; - if (!PyArg_ParseTuple(args, "is:LM_GEN1", &log_level, &msg)) + if(!PyArg_ParseTuple(args, "is:LM_GEN1", &log_level, &msg)) return NULL; LM_GEN1(log_level, "%s", msg); @@ -191,32 +191,30 @@ static PyObject *logger_LM_DBG(PyObject *self, PyObject *args) return Py_None; } -PyMethodDef LoggerMethods[] = { - {"LM_GEN1", (PyCFunction)logger_LM_GEN1, METH_VARARGS, "Print GEN1 message."}, - {"LM_GEN2", (PyCFunction)logger_LM_GEN2, METH_VARARGS, "Print GEN2 message."}, - {"LM_ALERT", (PyCFunction)logger_LM_ALERT, METH_VARARGS, "Print alert message."}, - {"LM_CRIT", (PyCFunction)logger_LM_CRIT, METH_VARARGS, "Print critical message."}, - {"LM_ERR", (PyCFunction)logger_LM_ERR, METH_VARARGS, "Print error message."}, - {"LM_WARN", (PyCFunction)logger_LM_WARN, METH_VARARGS, "Print warning message."}, - {"LM_NOTICE", (PyCFunction)logger_LM_NOTICE, METH_VARARGS, "Print notice message."}, - {"LM_INFO", (PyCFunction)logger_LM_INFO, METH_VARARGS, "Print info message."}, - {"LM_DBG", (PyCFunction)logger_LM_DBG, METH_VARARGS, "Print debug message."}, - {NULL, NULL, 0, NULL} -}; - -static struct PyModuleDef Router_Logger_moduledef = { - PyModuleDef_HEAD_INIT, - "Router.Logger", - NULL, - -1, - LoggerMethods, - NULL, - NULL, - NULL, - NULL -}; - -PyObject* get_logger_module(void) +PyMethodDef LoggerMethods[] = {{"LM_GEN1", (PyCFunction)logger_LM_GEN1, + METH_VARARGS, "Print GEN1 message."}, + {"LM_GEN2", (PyCFunction)logger_LM_GEN2, METH_VARARGS, + "Print GEN2 message."}, + {"LM_ALERT", (PyCFunction)logger_LM_ALERT, METH_VARARGS, + "Print alert message."}, + {"LM_CRIT", (PyCFunction)logger_LM_CRIT, METH_VARARGS, + "Print critical message."}, + {"LM_ERR", (PyCFunction)logger_LM_ERR, METH_VARARGS, + "Print error message."}, + {"LM_WARN", (PyCFunction)logger_LM_WARN, METH_VARARGS, + "Print warning message."}, + {"LM_NOTICE", (PyCFunction)logger_LM_NOTICE, METH_VARARGS, + "Print notice message."}, + {"LM_INFO", (PyCFunction)logger_LM_INFO, METH_VARARGS, + "Print info message."}, + {"LM_DBG", (PyCFunction)logger_LM_DBG, METH_VARARGS, + "Print debug message."}, + {NULL, NULL, 0, NULL}}; + +static struct PyModuleDef Router_Logger_moduledef = {PyModuleDef_HEAD_INIT, + "Router.Logger", NULL, -1, LoggerMethods, NULL, NULL, NULL, NULL}; + +PyObject *get_logger_module(void) { _sr_apy_logger_module = PyModule_Create(&Router_Logger_moduledef); @@ -224,24 +222,24 @@ PyObject* get_logger_module(void) * Log levels * Reference: dprint.h */ - PyModule_AddObject(_sr_apy_logger_module, "L_ALERT", - PyLong_FromLong((long)L_ALERT)); - PyModule_AddObject(_sr_apy_logger_module, "L_BUG", - PyLong_FromLong((long)L_BUG)); + PyModule_AddObject( + _sr_apy_logger_module, "L_ALERT", PyLong_FromLong((long)L_ALERT)); + PyModule_AddObject( + _sr_apy_logger_module, "L_BUG", PyLong_FromLong((long)L_BUG)); PyModule_AddObject(_sr_apy_logger_module, "L_CRIT2", PyLong_FromLong((long)L_CRIT2)); /* like L_CRIT, but adds prefix */ PyModule_AddObject(_sr_apy_logger_module, "L_CRIT", - PyLong_FromLong((long)L_CRIT)); /* no prefix added */ - PyModule_AddObject(_sr_apy_logger_module, "L_ERR", - PyLong_FromLong((long)L_ERR)); - PyModule_AddObject(_sr_apy_logger_module, "L_WARN", - PyLong_FromLong((long)L_WARN)); - PyModule_AddObject(_sr_apy_logger_module, "L_NOTICE", - PyLong_FromLong((long)L_NOTICE)); - PyModule_AddObject(_sr_apy_logger_module, "L_INFO", - PyLong_FromLong((long)L_INFO)); - PyModule_AddObject(_sr_apy_logger_module, "L_DBG", - PyLong_FromLong((long)L_DBG)); + PyLong_FromLong((long)L_CRIT)); /* no prefix added */ + PyModule_AddObject( + _sr_apy_logger_module, "L_ERR", PyLong_FromLong((long)L_ERR)); + PyModule_AddObject( + _sr_apy_logger_module, "L_WARN", PyLong_FromLong((long)L_WARN)); + PyModule_AddObject( + _sr_apy_logger_module, "L_NOTICE", PyLong_FromLong((long)L_NOTICE)); + PyModule_AddObject( + _sr_apy_logger_module, "L_INFO", PyLong_FromLong((long)L_INFO)); + PyModule_AddObject( + _sr_apy_logger_module, "L_DBG", PyLong_FromLong((long)L_DBG)); /* * Facility @@ -256,7 +254,6 @@ PyObject* get_logger_module(void) LM_ERR("Module 'Router.Logger' has been initialized\n"); #endif return _sr_apy_logger_module; - } void destroy_mod_Logger(void) @@ -266,6 +263,4 @@ void destroy_mod_Logger(void) #ifdef WITH_EXTRA_DEBUG LM_ERR("Module 'Router.Logger' has been destroyed\n"); #endif - } - diff --git a/src/modules/app_python3/mod_Logger.h b/src/modules/app_python3/mod_Logger.h index 944204988c7..401e6f4ad47 100644 --- a/src/modules/app_python3/mod_Logger.h +++ b/src/modules/app_python3/mod_Logger.h @@ -20,8 +20,8 @@ * */ -#ifndef __API__MOD_LOGGER_H__ -#define __API__MOD_LOGGER_H__ +#ifndef __API__MOD_LOGGER_H__ +#define __API__MOD_LOGGER_H__ #include #include diff --git a/src/modules/app_python3/mod_Ranks.c b/src/modules/app_python3/mod_Ranks.c index 118c2ca4f31..3bc216e39e9 100644 --- a/src/modules/app_python3/mod_Ranks.c +++ b/src/modules/app_python3/mod_Ranks.c @@ -43,23 +43,12 @@ PyObject *_sr_apy_ranks_module = NULL; -PyMethodDef RanksMethods[] = { - {NULL, NULL, 0, NULL} -}; +PyMethodDef RanksMethods[] = {{NULL, NULL, 0, NULL}}; -static struct PyModuleDef Router_Ranks_moduledef = { - PyModuleDef_HEAD_INIT, - "Router.Ranks", - NULL, - -1, - RanksMethods, - NULL, - NULL, - NULL, - NULL -}; +static struct PyModuleDef Router_Ranks_moduledef = {PyModuleDef_HEAD_INIT, + "Router.Ranks", NULL, -1, RanksMethods, NULL, NULL, NULL, NULL}; -PyObject* get_ranks_module(void) +PyObject *get_ranks_module(void) { _sr_apy_ranks_module = PyModule_Create(&Router_Ranks_moduledef); @@ -67,8 +56,8 @@ PyObject* get_ranks_module(void) PyLong_FromLong((long)PROC_MAIN)); PyModule_AddObject(_sr_apy_ranks_module, "PROC_TIMER", PyLong_FromLong((long)PROC_TIMER)); - PyModule_AddObject(_sr_apy_ranks_module, "PROC_RPC", - PyLong_FromLong((long)PROC_RPC)); + PyModule_AddObject( + _sr_apy_ranks_module, "PROC_RPC", PyLong_FromLong((long)PROC_RPC)); PyModule_AddObject(_sr_apy_ranks_module, "PROC_FIFO", PyLong_FromLong((long)PROC_FIFO)); PyModule_AddObject(_sr_apy_ranks_module, "PROC_TCP_MAIN", @@ -85,8 +74,8 @@ PyObject* get_ranks_module(void) PyLong_FromLong((long)PROC_SIPINIT)); PyModule_AddObject(_sr_apy_ranks_module, "PROC_SIPRPC", PyLong_FromLong((long)PROC_SIPRPC)); - PyModule_AddObject(_sr_apy_ranks_module, "PROC_MIN", - PyLong_FromLong((long)PROC_MIN)); + PyModule_AddObject( + _sr_apy_ranks_module, "PROC_MIN", PyLong_FromLong((long)PROC_MIN)); Py_INCREF(_sr_apy_ranks_module); @@ -104,6 +93,4 @@ void destroy_mod_Ranks(void) #ifdef WITH_EXTRA_DEBUG LM_ERR("Module 'Router.Ranks' has been destroyed\n"); #endif - } - diff --git a/src/modules/app_python3/mod_Ranks.h b/src/modules/app_python3/mod_Ranks.h index e24337689fe..84d0138489c 100644 --- a/src/modules/app_python3/mod_Ranks.h +++ b/src/modules/app_python3/mod_Ranks.h @@ -19,8 +19,8 @@ * */ -#ifndef __API__MOD_RANKS_H__ -#define __API__MOD_RANKS_H__ +#ifndef __API__MOD_RANKS_H__ +#define __API__MOD_RANKS_H__ #include #include diff --git a/src/modules/app_python3/mod_Router.c b/src/modules/app_python3/mod_Router.c index 04183ba47d4..71f10bc9d1a 100644 --- a/src/modules/app_python3/mod_Router.c +++ b/src/modules/app_python3/mod_Router.c @@ -44,48 +44,34 @@ PyObject *_sr_apy_main_module = NULL; -PyMethodDef RouterMethods[] = { - {NULL, NULL, 0, NULL} -}; - -static struct PyModuleDef Router_Core_moduledef = { - PyModuleDef_HEAD_INIT, - "Router", - NULL, - -1, - RouterMethods, - NULL, - NULL, - NULL, - NULL -}; - -extern PyObject* get_core_module(); -extern PyObject* get_logger_module(); -extern PyObject* get_ranks_module(); -static PyObject* init_Router(void) +PyMethodDef RouterMethods[] = {{NULL, NULL, 0, NULL}}; + +static struct PyModuleDef Router_Core_moduledef = {PyModuleDef_HEAD_INIT, + "Router", NULL, -1, RouterMethods, NULL, NULL, NULL, NULL}; + +extern PyObject *get_core_module(); +extern PyObject *get_logger_module(); +extern PyObject *get_ranks_module(); +static PyObject *init_Router(void) { _sr_apy_main_module = PyModule_Create(&Router_Core_moduledef); - PyModule_AddObject(_sr_apy_main_module, "Core", get_core_module()); - PyModule_AddObject(_sr_apy_main_module, "Logger", get_logger_module()); - PyModule_AddObject(_sr_apy_main_module, "Ranks", get_ranks_module()); + PyModule_AddObject(_sr_apy_main_module, "Core", get_core_module()); + PyModule_AddObject(_sr_apy_main_module, "Logger", get_logger_module()); + PyModule_AddObject(_sr_apy_main_module, "Ranks", get_ranks_module()); Py_INCREF(_sr_apy_main_module); - return _sr_apy_main_module; - + return _sr_apy_main_module; } -extern -void init_mod_Router(void) +extern void init_mod_Router(void) { - PyImport_AppendInittab("Router", &init_Router); + PyImport_AppendInittab("Router", &init_Router); #ifdef WITH_EXTRA_DEBUG LM_ERR("Module 'Router' has been initialized\n"); #endif - } void destroy_mod_Router(void) @@ -95,6 +81,4 @@ void destroy_mod_Router(void) #ifdef WITH_EXTRA_DEBUG LM_ERR("Module 'Router' has been destroyed\n"); #endif - } - diff --git a/src/modules/app_python3/mod_Router.h b/src/modules/app_python3/mod_Router.h index 6660d575a8e..0c92eb852cb 100644 --- a/src/modules/app_python3/mod_Router.h +++ b/src/modules/app_python3/mod_Router.h @@ -19,8 +19,8 @@ * */ -#ifndef __API__MOD_ROUTER_H__ -#define __API__MOD_ROUTER_H__ +#ifndef __API__MOD_ROUTER_H__ +#define __API__MOD_ROUTER_H__ #include #include diff --git a/src/modules/app_python3/msgobj_struct.h b/src/modules/app_python3/msgobj_struct.h index 8bd6535bd3b..d1bd5114391 100644 --- a/src/modules/app_python3/msgobj_struct.h +++ b/src/modules/app_python3/msgobj_struct.h @@ -20,15 +20,15 @@ */ #ifndef _MSGOBJ_STRUCT_H -#define _MSGOBJ_STRUCT_H +#define _MSGOBJ_STRUCT_H #include "../../core/parser/msg_parser.h" #include -typedef struct { - PyObject_HEAD - struct sip_msg *msg; +typedef struct +{ + PyObject_HEAD struct sip_msg *msg; } msgobject; PyObject *msg_call_function(msgobject *, PyObject *); diff --git a/src/modules/app_python3/python_exec.c b/src/modules/app_python3/python_exec.c index b402a2b9d63..f57a876dcf7 100644 --- a/src/modules/app_python3/python_exec.c +++ b/src/modules/app_python3/python_exec.c @@ -49,14 +49,16 @@ sr_apy_env_t *sr_apy_env_get() #define PY_GIL_ENSURE gstate = PyGILState_Ensure() #define PY_GIL_RELEASE PyGILState_Release(gstate) -#define LOCK_RELEASE if(locked) lock_release(_sr_python_reload_lock) +#define LOCK_RELEASE \ + if(locked) \ + lock_release(_sr_python_reload_lock) /* * copy the logic from app_lua/app_lua_api.c: * reload script if version has changed and we are depth 0 * initialized in apy_kemi.c */ -extern gen_lock_t* _sr_python_reload_lock; +extern gen_lock_t *_sr_python_reload_lock; extern int *_sr_python_reload_version; extern int _sr_python_local_version; @@ -69,10 +71,12 @@ int apy_exec(sip_msg_t *_msg, char *fname, char *fparam, int emode) PyGILState_STATE gstate; int locked = 0; - if (lock_try(_sr_python_reload_lock) == 0) { - if(_sr_python_reload_version && *_sr_python_reload_version != _sr_python_local_version) { - LM_INFO("Reloading script %d->%d\n", _sr_python_local_version, *_sr_python_reload_version); - if (apy_reload_script()) { + if(lock_try(_sr_python_reload_lock) == 0) { + if(_sr_python_reload_version + && *_sr_python_reload_version != _sr_python_local_version) { + LM_INFO("Reloading script %d->%d\n", _sr_python_local_version, + *_sr_python_reload_version); + if(apy_reload_script()) { LM_ERR("Error reloading script\n"); } else { _sr_python_local_version = *_sr_python_reload_version; @@ -86,15 +90,15 @@ int apy_exec(sip_msg_t *_msg, char *fname, char *fparam, int emode) PY_GIL_ENSURE; pFunc = PyObject_GetAttrString(_sr_apy_handler_obj, fname); - if (pFunc == NULL || !PyCallable_Check(pFunc)) { - if(emode==1) { + if(pFunc == NULL || !PyCallable_Check(pFunc)) { + if(emode == 1) { LM_ERR("%s not found or is not callable\n", fname); } else { LM_DBG("%s not found or is not callable\n", fname); } Py_XDECREF(pFunc); _sr_apy_env.msg = bmsg; - if(emode==1) { + if(emode == 1) { goto err; } else { rval = 1; @@ -103,7 +107,7 @@ int apy_exec(sip_msg_t *_msg, char *fname, char *fparam, int emode) } pmsg = newmsgobject(_msg); - if (pmsg == NULL) { + if(pmsg == NULL) { LM_ERR("can't create MSGtype instance\n"); Py_DECREF(pFunc); _sr_apy_env.msg = bmsg; @@ -111,7 +115,7 @@ int apy_exec(sip_msg_t *_msg, char *fname, char *fparam, int emode) } pArgs = PyTuple_New(fparam == NULL ? 1 : 2); - if (pArgs == NULL) { + if(pArgs == NULL) { LM_ERR("PyTuple_New() has failed\n"); msg_invalidate(pmsg); Py_DECREF(pmsg); @@ -122,9 +126,9 @@ int apy_exec(sip_msg_t *_msg, char *fname, char *fparam, int emode) PyTuple_SetItem(pArgs, 0, pmsg); /* Tuple steals pmsg */ - if (fparam != NULL) { + if(fparam != NULL) { pValue = PyUnicode_FromString(fparam); - if (pValue == NULL) { + if(pValue == NULL) { LM_ERR("PyUnicode_FromString(%s) has failed\n", fparam); msg_invalidate(pmsg); Py_DECREF(pArgs); @@ -140,14 +144,14 @@ int apy_exec(sip_msg_t *_msg, char *fname, char *fparam, int emode) msg_invalidate(pmsg); Py_DECREF(pArgs); Py_DECREF(pFunc); - if (PyErr_Occurred()) { + if(PyErr_Occurred()) { Py_XDECREF(pResult); python_handle_exception("apy_exec: %s(%s)", fname, fparam); _sr_apy_env.msg = bmsg; goto err; } - if (pResult == NULL) { + if(pResult == NULL) { LM_ERR("PyObject_CallObject() returned NULL\n"); _sr_apy_env.msg = bmsg; goto err; @@ -156,7 +160,7 @@ int apy_exec(sip_msg_t *_msg, char *fname, char *fparam, int emode) rval = PyLong_AsLong(pResult); Py_DECREF(pResult); _sr_apy_env.msg = bmsg; - err: +err: PY_GIL_RELEASE; LOCK_RELEASE; return rval; @@ -168,7 +172,7 @@ int apy_exec(sip_msg_t *_msg, char *fname, char *fparam, int emode) int python_exec1(sip_msg_t *_msg, char *method_name, char *foobar) { str method = STR_NULL; - if(fixup_get_svalue(_msg, (gparam_t*)method_name, &method)<0) { + if(fixup_get_svalue(_msg, (gparam_t *)method_name, &method) < 0) { LM_ERR("cannot get the python method to be executed\n"); return -1; } @@ -182,11 +186,11 @@ int python_exec2(sip_msg_t *_msg, char *method_name, char *mystr) { str method = STR_NULL; str param = STR_NULL; - if(fixup_get_svalue(_msg, (gparam_t*)method_name, &method)<0) { + if(fixup_get_svalue(_msg, (gparam_t *)method_name, &method) < 0) { LM_ERR("cannot get the python method to be executed\n"); return -1; } - if(fixup_get_svalue(_msg, (gparam_t*)mystr, ¶m)<0) { + if(fixup_get_svalue(_msg, (gparam_t *)mystr, ¶m) < 0) { LM_ERR("cannot get the parameter of the python method\n"); return -1; } diff --git a/src/modules/app_python3/python_exec.h b/src/modules/app_python3/python_exec.h index 2121144e87f..7e4b6a325d4 100644 --- a/src/modules/app_python3/python_exec.h +++ b/src/modules/app_python3/python_exec.h @@ -20,11 +20,12 @@ */ #ifndef _PYTHON_EXEC_H -#define _PYTHON_EXEC_H +#define _PYTHON_EXEC_H #include "../../core/parser/msg_parser.h" -typedef struct sr_apy_env { +typedef struct sr_apy_env +{ sip_msg_t *msg; } sr_apy_env_t; diff --git a/src/modules/app_python3/python_iface.c b/src/modules/app_python3/python_iface.c index c0e8d2a5ed3..c4456d973e9 100644 --- a/src/modules/app_python3/python_iface.c +++ b/src/modules/app_python3/python_iface.c @@ -47,8 +47,8 @@ int ap_init_modules(void) init_mod_Ranks(); init_mod_Logger(); */ - if(sr_apy_init_ksr()<0) return -1; + if(sr_apy_init_ksr() < 0) + return -1; return 0; } - diff --git a/src/modules/app_python3/python_iface.h b/src/modules/app_python3/python_iface.h index a594b69a15d..b5cb1fe8752 100644 --- a/src/modules/app_python3/python_iface.h +++ b/src/modules/app_python3/python_iface.h @@ -20,7 +20,7 @@ */ #ifndef _PYTHON_IFACE_H -#define _PYTHON_IFACE_H +#define _PYTHON_IFACE_H #include diff --git a/src/modules/app_python3/python_msgobj.c b/src/modules/app_python3/python_msgobj.c index 22aebd54048..54e23b96dc1 100644 --- a/src/modules/app_python3/python_msgobj.c +++ b/src/modules/app_python3/python_msgobj.c @@ -32,14 +32,14 @@ static PyTypeObject MSGtype; -#define is_msgobject(v) ((v)->ob_type == &MSGtype) +#define is_msgobject(v) ((v)->ob_type == &MSGtype) msgobject *newmsgobject(struct sip_msg *msg) { msgobject *msgp; msgp = PyObject_New(msgobject, &MSGtype); - if (msgp == NULL) + if(msgp == NULL) return NULL; msgp->msg = msg; @@ -60,7 +60,7 @@ static PyObject *msg_copy(msgobject *self) { msgobject *msgp; - if ((msgp = newmsgobject(self->msg)) == NULL) + if((msgp = newmsgobject(self->msg)) == NULL) return NULL; return (PyObject *)msgp; @@ -70,18 +70,19 @@ static PyObject *msg_rewrite_ruri(msgobject *self, PyObject *args) { str nuri; - if (self == NULL) { + if(self == NULL) { PyErr_SetString(PyExc_RuntimeError, "self is NULL"); return NULL; } - if (self->msg == NULL) { + if(self->msg == NULL) { PyErr_SetString(PyExc_RuntimeError, "self->msg is NULL"); return NULL; } - if ((self->msg->first_line).type != SIP_REQUEST) { - PyErr_SetString(PyExc_RuntimeError, "Not a request message - rewrite is not possible.\n"); + if((self->msg->first_line).type != SIP_REQUEST) { + PyErr_SetString(PyExc_RuntimeError, + "Not a request message - rewrite is not possible.\n"); return NULL; } @@ -90,7 +91,7 @@ static PyObject *msg_rewrite_ruri(msgobject *self, PyObject *args) nuri.len = strlen(nuri.s); - if(rewrite_uri(self->msg, &nuri)<0) { + if(rewrite_uri(self->msg, &nuri) < 0) { LM_ERR("failed to update r-uri with [%.*s]\n", nuri.len, nuri.s); } @@ -102,18 +103,19 @@ static PyObject *msg_set_dst_uri(msgobject *self, PyObject *args) { str ruri; - if (self == NULL) { + if(self == NULL) { PyErr_SetString(PyExc_RuntimeError, "self is NULL"); return NULL; } - if (self->msg == NULL) { + if(self->msg == NULL) { PyErr_SetString(PyExc_RuntimeError, "self->msg is NULL"); return NULL; } - if ((self->msg->first_line).type != SIP_REQUEST) { - PyErr_SetString(PyExc_RuntimeError, "Not a request message - set destination is not possible.\n"); + if((self->msg->first_line).type != SIP_REQUEST) { + PyErr_SetString(PyExc_RuntimeError, + "Not a request message - set destination is not possible.\n"); return NULL; } @@ -122,7 +124,7 @@ static PyObject *msg_set_dst_uri(msgobject *self, PyObject *args) ruri.len = strlen(ruri.s); - if (set_dst_uri(self->msg, &ruri) < 0) { + if(set_dst_uri(self->msg, &ruri) < 0) { PyErr_SetString(PyExc_RuntimeError, "Error in set_dst_uri\n"); return NULL; } @@ -139,12 +141,12 @@ static PyObject *msg_getHeader(msgobject *self, PyObject *args) struct hdr_field *hf; str hname, *hbody; - if (self == NULL) { + if(self == NULL) { PyErr_SetString(PyExc_RuntimeError, "self is NULL"); return NULL; } - if (self->msg == NULL) { + if(self->msg == NULL) { PyErr_SetString(PyExc_RuntimeError, "self->msg is NULL"); return NULL; } @@ -153,19 +155,19 @@ static PyObject *msg_getHeader(msgobject *self, PyObject *args) return NULL; hname.len = strlen(hname.s); - if(parse_headers(self->msg, HDR_EOH_F, 0)<0) { + if(parse_headers(self->msg, HDR_EOH_F, 0) < 0) { LM_ERR("failed to parse msg headers\n"); } hbody = NULL; - for (hf = self->msg->headers; hf != NULL; hf = hf->next) { - if (hname.len == hf->name.len && - strncasecmp(hname.s, hf->name.s, hname.len) == 0) { + for(hf = self->msg->headers; hf != NULL; hf = hf->next) { + if(hname.len == hf->name.len + && strncasecmp(hname.s, hf->name.s, hname.len) == 0) { hbody = &(hf->body); break; } } - if (hbody == NULL) { + if(hbody == NULL) { Py_INCREF(Py_None); return Py_None; } @@ -177,24 +179,24 @@ PyObject *msg_call_function(msgobject *self, PyObject *args) { int i, rval; char *fname, *arg1, *arg2; - ksr_cmd_export_t* fexport; + ksr_cmd_export_t *fexport; struct action *act; struct run_act_ctx ra_ctx; - if (self == NULL) { + if(self == NULL) { PyErr_SetString(PyExc_RuntimeError, "self is NULL"); return NULL; } - if (self->msg == NULL) { + if(self->msg == NULL) { PyErr_SetString(PyExc_RuntimeError, "self->msg is NULL"); return NULL; } i = PySequence_Size(args); - if (i < 1 || i > 3) { - PyErr_SetString(PyExc_RuntimeError, "call_function() should " \ - "have from 1 to 3 arguments"); + if(i < 1 || i > 3) { + PyErr_SetString(PyExc_RuntimeError, "call_function() should " + "have from 1 to 3 arguments"); return NULL; } @@ -202,46 +204,46 @@ PyObject *msg_call_function(msgobject *self, PyObject *args) return NULL; fexport = find_export_record(fname, i - 1, 0); - if (fexport == NULL) { + if(fexport == NULL) { PyErr_SetString(PyExc_RuntimeError, "no such function"); return NULL; } - act = mk_action(MODULE2_T, 4 /* number of (type, value) pairs */, - MODEXP_ST, fexport, /* function */ - NUMBER_ST, 2, /* parameter number */ - STRING_ST, arg1, /* param. 1 */ - STRING_ST, arg2 /* param. 2 */ - ); + act = mk_action(MODULE2_T, 4 /* number of (type, value) pairs */, MODEXP_ST, + fexport, /* function */ + NUMBER_ST, 2, /* parameter number */ + STRING_ST, arg1, /* param. 1 */ + STRING_ST, arg2 /* param. 2 */ + ); - if (act == NULL) { - PyErr_SetString(PyExc_RuntimeError, - "action structure could not be created"); + if(act == NULL) { + PyErr_SetString( + PyExc_RuntimeError, "action structure could not be created"); return NULL; } - if (fexport->fixup != NULL) { - if (i >= 3) { + if(fexport->fixup != NULL) { + if(i >= 3) { rval = fexport->fixup(&(act->val[3].u.data), 2); - if (rval < 0) { + if(rval < 0) { pkg_free(act); PyErr_SetString(PyExc_RuntimeError, "Error in fixup (2)"); return NULL; } act->val[3].type = MODFIXUP_ST; } - if (i >= 2) { + if(i >= 2) { rval = fexport->fixup(&(act->val[2].u.data), 1); - if (rval < 0) { + if(rval < 0) { pkg_free(act); PyErr_SetString(PyExc_RuntimeError, "Error in fixup (1)"); return NULL; } act->val[2].type = MODFIXUP_ST; } - if (i == 1) { + if(i == 1) { rval = fexport->fixup(0, 0); - if (rval < 0) { + if(rval < 0) { pkg_free(act); PyErr_SetString(PyExc_RuntimeError, "Error in fixup (0)"); return NULL; @@ -252,11 +254,11 @@ PyObject *msg_call_function(msgobject *self, PyObject *args) init_run_actions_ctx(&ra_ctx); rval = do_action(&ra_ctx, act, self->msg); - if ((act->val[3].type == MODFIXUP_ST) && (act->val[3].u.data)) { + if((act->val[3].type == MODFIXUP_ST) && (act->val[3].u.data)) { pkg_free(act->val[3].u.data); } - if ((act->val[2].type == MODFIXUP_ST) && (act->val[2].u.data)) { + if((act->val[2].type == MODFIXUP_ST) && (act->val[2].u.data)) { pkg_free(act->val[2].u.data); } @@ -265,41 +267,38 @@ PyObject *msg_call_function(msgobject *self, PyObject *args) return PyLong_FromLong(rval); } -PyDoc_STRVAR(copy_doc, - "copy() -> msg object\n\ +PyDoc_STRVAR(copy_doc, "copy() -> msg object\n\ \n\ Return a copy (``clone'') of the msg object."); static PyMethodDef msg_methods[] = { - {"copy", (PyCFunction)msg_copy, METH_NOARGS, - copy_doc}, - {"rewrite_ruri", (PyCFunction)msg_rewrite_ruri, METH_VARARGS, - "Rewrite Request-URI."}, - {"set_dst_uri", (PyCFunction)msg_set_dst_uri, METH_VARARGS, - "Set destination URI."}, - {"getHeader", (PyCFunction)msg_getHeader, METH_VARARGS, - "Get SIP header field by name."}, - {"call_function", (PyCFunction)msg_call_function, METH_VARARGS, - "Invoke function exported by the other module."}, - {NULL, NULL, 0, NULL} /* sentinel */ + {"copy", (PyCFunction)msg_copy, METH_NOARGS, copy_doc}, + {"rewrite_ruri", (PyCFunction)msg_rewrite_ruri, METH_VARARGS, + "Rewrite Request-URI."}, + {"set_dst_uri", (PyCFunction)msg_set_dst_uri, METH_VARARGS, + "Set destination URI."}, + {"getHeader", (PyCFunction)msg_getHeader, METH_VARARGS, + "Get SIP header field by name."}, + {"call_function", (PyCFunction)msg_call_function, METH_VARARGS, + "Invoke function exported by the other module."}, + {NULL, NULL, 0, NULL} /* sentinel */ }; static PyObject *msg_getType(msgobject *self, PyObject *unused) { const char *rval; - if (self == NULL) { + if(self == NULL) { PyErr_SetString(PyExc_RuntimeError, "self is NULL"); return NULL; } - if (self->msg == NULL) { + if(self->msg == NULL) { PyErr_SetString(PyExc_RuntimeError, "self->msg is NULL"); return NULL; } - switch ((self->msg->first_line).type) - { + switch((self->msg->first_line).type) { case SIP_REQUEST: rval = "SIP_REQUEST"; break; @@ -320,18 +319,19 @@ static PyObject *msg_getMethod(msgobject *self, PyObject *unused) { str *rval; - if (self == NULL) { + if(self == NULL) { PyErr_SetString(PyExc_RuntimeError, "self is NULL"); return NULL; } - if (self->msg == NULL) { + if(self->msg == NULL) { PyErr_SetString(PyExc_RuntimeError, "self->msg is NULL"); return NULL; } - if ((self->msg->first_line).type != SIP_REQUEST) { - PyErr_SetString(PyExc_RuntimeError, "Not a request message - no method available.\n"); + if((self->msg->first_line).type != SIP_REQUEST) { + PyErr_SetString(PyExc_RuntimeError, + "Not a request message - no method available.\n"); return NULL; } @@ -343,18 +343,19 @@ static PyObject *msg_getStatus(msgobject *self, PyObject *unused) { str *rval; - if (self == NULL) { + if(self == NULL) { PyErr_SetString(PyExc_RuntimeError, "self is NULL"); return NULL; } - if (self->msg == NULL) { + if(self->msg == NULL) { PyErr_SetString(PyExc_RuntimeError, "self->msg is NULL"); return NULL; } - if ((self->msg->first_line).type != SIP_REPLY) { - PyErr_SetString(PyExc_RuntimeError, "Not a non-reply message - no status available.\n"); + if((self->msg->first_line).type != SIP_REPLY) { + PyErr_SetString(PyExc_RuntimeError, + "Not a non-reply message - no status available.\n"); return NULL; } @@ -366,18 +367,19 @@ static PyObject *msg_getRURI(msgobject *self, PyObject *unused) { str *rval; - if (self == NULL) { + if(self == NULL) { PyErr_SetString(PyExc_RuntimeError, "self is NULL"); return NULL; } - if (self->msg == NULL) { + if(self->msg == NULL) { PyErr_SetString(PyExc_RuntimeError, "self->msg is NULL"); return NULL; } - if ((self->msg->first_line).type != SIP_REQUEST) { - PyErr_SetString(PyExc_RuntimeError, "Not a request message - RURI is not available.\n"); + if((self->msg->first_line).type != SIP_REQUEST) { + PyErr_SetString(PyExc_RuntimeError, + "Not a request message - RURI is not available.\n"); return NULL; } @@ -389,24 +391,24 @@ static PyObject *msg_get_src_address(msgobject *self, PyObject *unused) { PyObject *src_ip, *src_port, *pyRval; - if (self == NULL) { + if(self == NULL) { PyErr_SetString(PyExc_RuntimeError, "self is NULL"); return NULL; } - if (self->msg == NULL) { + if(self->msg == NULL) { PyErr_SetString(PyExc_RuntimeError, "self->msg is NULL"); return NULL; } src_ip = PyUnicode_FromString(ip_addr2a(&self->msg->rcv.src_ip)); - if (src_ip == NULL) { + if(src_ip == NULL) { Py_INCREF(Py_None); return Py_None; } src_port = PyLong_FromLong(self->msg->rcv.src_port); - if (src_port == NULL) { + if(src_port == NULL) { Py_DECREF(src_ip); Py_INCREF(Py_None); return Py_None; @@ -415,7 +417,7 @@ static PyObject *msg_get_src_address(msgobject *self, PyObject *unused) pyRval = PyTuple_Pack(2, src_ip, src_port); Py_DECREF(src_ip); Py_DECREF(src_port); - if (pyRval == NULL) { + if(pyRval == NULL) { Py_INCREF(Py_None); return Py_None; } @@ -427,24 +429,24 @@ static PyObject *msg_get_dst_address(msgobject *self, PyObject *unused) { PyObject *dst_ip, *dst_port, *pyRval; - if (self == NULL) { + if(self == NULL) { PyErr_SetString(PyExc_RuntimeError, "self is NULL"); return NULL; } - if (self->msg == NULL) { + if(self->msg == NULL) { PyErr_SetString(PyExc_RuntimeError, "self->msg is NULL"); return NULL; } dst_ip = PyUnicode_FromString(ip_addr2a(&self->msg->rcv.dst_ip)); - if (dst_ip == NULL) { + if(dst_ip == NULL) { Py_INCREF(Py_None); return Py_None; } dst_port = PyLong_FromLong(self->msg->rcv.dst_port); - if (dst_port == NULL) { + if(dst_port == NULL) { Py_DECREF(dst_ip); Py_INCREF(Py_None); return Py_None; @@ -453,7 +455,7 @@ static PyObject *msg_get_dst_address(msgobject *self, PyObject *unused) pyRval = PyTuple_Pack(2, dst_ip, dst_port); Py_DECREF(dst_ip); Py_DECREF(dst_port); - if (pyRval == NULL) { + if(pyRval == NULL) { Py_INCREF(Py_None); return Py_None; } @@ -462,47 +464,52 @@ static PyObject *msg_get_dst_address(msgobject *self, PyObject *unused) } static PyGetSetDef msg_getseters[] = { - {"Type", (getter)msg_getType, NULL, NULL, "Get message type - \"SIP_REQUEST\" or \"SIP_REPLY\"."}, - {"Method", (getter)msg_getMethod, NULL, NULL, "Get SIP method name."}, - {"Status", (getter)msg_getStatus, NULL, NULL, "Get SIP status code string."}, - {"RURI", (getter)msg_getRURI, NULL, NULL, "Get SIP Request-URI."}, - {"src_address", (getter)msg_get_src_address, NULL, NULL, "Get (IP, port) tuple representing source address of the message."}, - {"dst_address", (getter)msg_get_dst_address, NULL, NULL, "Get (IP, port) tuple representing destination address of the message."}, - {NULL, NULL, NULL, NULL, NULL} /* Sentinel */ + {"Type", (getter)msg_getType, NULL, NULL, + "Get message type - \"SIP_REQUEST\" or \"SIP_REPLY\"."}, + {"Method", (getter)msg_getMethod, NULL, NULL, "Get SIP method name."}, + {"Status", (getter)msg_getStatus, NULL, NULL, + "Get SIP status code string."}, + {"RURI", (getter)msg_getRURI, NULL, NULL, "Get SIP Request-URI."}, + {"src_address", (getter)msg_get_src_address, NULL, NULL, + "Get (IP, port) tuple representing source address of the " + "message."}, + {"dst_address", (getter)msg_get_dst_address, NULL, NULL, + "Get (IP, port) tuple representing destination address of the " + "message."}, + {NULL, NULL, NULL, NULL, NULL} /* Sentinel */ }; static PyTypeObject MSGtype = { - PyVarObject_HEAD_INIT(NULL, 0) - "Router.msg", /*tp_name*/ - sizeof(msgobject), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor)msg_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - 0, /*tp_as_sync*/ - 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, /*tp_flags*/ - 0, /*tp_doc*/ - 0, /*tp_traverse*/ - 0, /*tp_clear*/ - 0, /*tp_richcompare*/ - 0, /*tp_weaklistoffset*/ - 0, /*tp_iter*/ - 0, /*tp_iternext*/ - msg_methods, /*tp_methods*/ - 0, /*tp_members*/ - msg_getseters, /*tp_getset*/ + PyVarObject_HEAD_INIT(NULL, 0) "Router.msg", /*tp_name*/ + sizeof(msgobject), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + /* methods */ + (destructor)msg_dealloc, /*tp_dealloc*/ + 0, /*tp_print*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_as_sync*/ + 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, /*tp_flags*/ + 0, /*tp_doc*/ + 0, /*tp_traverse*/ + 0, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + msg_methods, /*tp_methods*/ + 0, /*tp_members*/ + msg_getseters, /*tp_getset*/ }; int python_msgobj_init(void) @@ -512,7 +519,7 @@ int python_msgobj_init(void) #else Py_TYPE(&MSGtype) = &PyType_Type; #endif - if (PyType_Ready(&MSGtype) < 0) + if(PyType_Ready(&MSGtype) < 0) return -1; return 0; } diff --git a/src/modules/app_python3/python_msgobj.h b/src/modules/app_python3/python_msgobj.h index 9eb48cc6ce4..8fb84a8cb37 100644 --- a/src/modules/app_python3/python_msgobj.h +++ b/src/modules/app_python3/python_msgobj.h @@ -20,7 +20,7 @@ */ #ifndef _PYTHON_MSGOBJ_H -#define _PYTHON_MSGOBJ_H +#define _PYTHON_MSGOBJ_H #include "../../core/parser/msg_parser.h" diff --git a/src/modules/app_python3/python_support.c b/src/modules/app_python3/python_support.c index 0a8216f133f..566f04c835e 100644 --- a/src/modules/app_python3/python_support.c +++ b/src/modules/app_python3/python_support.c @@ -45,10 +45,10 @@ void python_handle_exception(const char *fmt, ...) va_list ap; // We don't want to generate traceback when no errors occurred - if (!PyErr_Occurred()) + if(!PyErr_Occurred()) return; - if (fmt == NULL) + if(fmt == NULL) srcbuf = NULL; else { va_start(ap, fmt); @@ -58,16 +58,18 @@ void python_handle_exception(const char *fmt, ...) PyErr_Fetch(&exception, &v, &tb); PyErr_Clear(); - if (exception == NULL) { + if(exception == NULL) { LM_ERR("Can't get traceback, PyErr_Fetch() has failed.\n"); - if (srcbuf) pkg_free(srcbuf); + if(srcbuf) + pkg_free(srcbuf); return; } PyErr_NormalizeException(&exception, &v, &tb); - if (exception == NULL) { + if(exception == NULL) { LM_ERR("Can't get traceback, PyErr_NormalizeException() has failed.\n"); - if (srcbuf) pkg_free(srcbuf); + if(srcbuf) + pkg_free(srcbuf); return; } @@ -76,51 +78,57 @@ void python_handle_exception(const char *fmt, ...) Py_XDECREF(exception); Py_XDECREF(v); Py_XDECREF(tb); - if (args == NULL) { + if(args == NULL) { LM_ERR("Can't get traceback, PyTuple_Pack() has failed.\n"); - if (srcbuf) pkg_free(srcbuf); + if(srcbuf) + pkg_free(srcbuf); return; } pResult = PyObject_CallObject(format_exc_obj, args); Py_DECREF(args); - if (pResult == NULL) { - LM_ERR("Can't get traceback, traceback.format_exception() has failed.\n"); - if (srcbuf) pkg_free(srcbuf); + if(pResult == NULL) { + LM_ERR("Can't get traceback, traceback.format_exception() has " + "failed.\n"); + if(srcbuf) + pkg_free(srcbuf); return; } buflen = 1; buf = (char *)pkg_realloc(NULL, buflen * sizeof(char)); - if (!buf) - { + if(!buf) { LM_ERR("Can't allocate memory (%lu bytes), pkg_realloc() has failed." - " Not enough memory.\n", (unsigned long)(buflen * sizeof(char *))); - if (srcbuf) pkg_free(srcbuf); + " Not enough memory.\n", + (unsigned long)(buflen * sizeof(char *))); + if(srcbuf) + pkg_free(srcbuf); return; } memset(buf, 0, buflen * sizeof(char)); - for (i = 0; i < PySequence_Size(pResult); i++) { + for(i = 0; i < PySequence_Size(pResult); i++) { line = PySequence_GetItem(pResult, i); - if (line == NULL) { + if(line == NULL) { LM_ERR("Can't get traceback, PySequence_GetItem() has failed.\n"); Py_DECREF(pResult); - if (buf) + if(buf) pkg_free(buf); - if (srcbuf) pkg_free(srcbuf); + if(srcbuf) + pkg_free(srcbuf); return; } msg = PyUnicode_AsUTF8(line); - if (msg == NULL) { + if(msg == NULL) { LM_ERR("Can't get traceback, PyUnicode_AsUTF8() has failed.\n"); Py_DECREF(line); Py_DECREF(pResult); - if (buf) + if(buf) pkg_free(buf); - if (srcbuf) pkg_free(srcbuf); + if(srcbuf) + pkg_free(srcbuf); return; } @@ -128,22 +136,24 @@ void python_handle_exception(const char *fmt, ...) buflen += ++msglen; buf = (char *)pkg_reallocxf(buf, buflen * sizeof(char)); - if (!buf) - { - LM_ERR("Can't allocate memory (%lu bytes), pkg_realloc() has failed." - " Not enough memory.\n", (unsigned long)(buflen * sizeof(char *))); + if(!buf) { + LM_ERR("Can't allocate memory (%lu bytes), pkg_realloc() has " + "failed." + " Not enough memory.\n", + (unsigned long)(buflen * sizeof(char *))); Py_DECREF(line); Py_DECREF(pResult); - if (srcbuf) pkg_free(srcbuf); + if(srcbuf) + pkg_free(srcbuf); return; } - strncat(buf, msg, msglen >= buflen ? buflen-1 : msglen); + strncat(buf, msg, msglen >= buflen ? buflen - 1 : msglen); Py_DECREF(line); } - if (srcbuf == NULL) { + if(srcbuf == NULL) { if(exc_exit) { LM_DBG("Unhandled exception in the Python code:\n%s", buf); } else { @@ -151,16 +161,18 @@ void python_handle_exception(const char *fmt, ...) } } else { if(exc_exit) { - LM_DBG("%s: Unhandled exception in the Python code:\n%s", srcbuf, buf); + LM_DBG("%s: Unhandled exception in the Python code:\n%s", srcbuf, + buf); } else { - LM_ERR("%s: Unhandled exception in the Python code:\n%s", srcbuf, buf); + LM_ERR("%s: Unhandled exception in the Python code:\n%s", srcbuf, + buf); } } - if (buf) + if(buf) pkg_free(buf); - if (srcbuf) + if(srcbuf) pkg_free(srcbuf); Py_DECREF(pResult); @@ -172,16 +184,16 @@ PyObject *InitTracebackModule() PyObject *pModule, *pTracebackObject; pModule = PyImport_ImportModule("traceback"); - if (pModule == NULL) { + if(pModule == NULL) { LM_ERR("Cannot import module 'traceback'.\n"); return NULL; } pTracebackObject = PyObject_GetAttrString(pModule, "format_exception"); Py_DECREF(pModule); - if (pTracebackObject == NULL || !PyCallable_Check(pTracebackObject)) { + if(pTracebackObject == NULL || !PyCallable_Check(pTracebackObject)) { LM_ERR("AttributeError: 'module' object 'traceback' has no attribute" - " 'format_exception'.\n"); + " 'format_exception'.\n"); Py_XDECREF(pTracebackObject); return NULL; } @@ -196,42 +208,41 @@ static char *make_message(const char *fmt, va_list ap) size_t size; char *p, *np; - size = 100; /* Guess we need no more than 100 bytes. */ + size = 100; /* Guess we need no more than 100 bytes. */ p = (char *)pkg_realloc(NULL, size * sizeof(char)); - if (!p) - { + if(!p) { LM_ERR("Can't allocate memory (%lu bytes), pkg_malloc() has failed:" - " Not enough memory.\n", (unsigned long)(size * sizeof(char))); + " Not enough memory.\n", + (unsigned long)(size * sizeof(char))); return NULL; } memset(p, 0, size * sizeof(char)); - while (1) - { + while(1) { n = vsnprintf(p, size, fmt, ap); - if (n > -1 && n < size) + if(n > -1 && n < size) return p; - if (n > -1) /* glibc 2.1 */ - size = n+1; - else /* glibc 2.0 */ + if(n > -1) /* glibc 2.1 */ + size = n + 1; + else /* glibc 2.0 */ size *= 2; np = (char *)pkg_realloc(p, size * sizeof(char)); - if (!np) - { - LM_ERR("Can't allocate memory (%lu bytes), pkg_realloc() has failed:" - " Not enough memory.\n", (unsigned long)size * sizeof(char)); - if (p) + if(!np) { + LM_ERR("Can't allocate memory (%lu bytes), pkg_realloc() has " + "failed:" + " Not enough memory.\n", + (unsigned long)size * sizeof(char)); + if(p) pkg_free(p); return NULL; - } - else + } else p = np; } - return NULL; // shall not happened, but who knows ;) + return NULL; // shall not happened, but who knows ;) } #if PY_VERSION_HEX >= 0x03070000 @@ -248,8 +259,7 @@ char *get_class_name(PyObject *y) #endif p = PyObject_GetAttrString(y, "__name__"); - if (p == NULL || p == Py_None) - { + if(p == NULL || p == Py_None) { Py_XDECREF(p); return NULL; } @@ -275,15 +285,13 @@ char *get_instance_class_name(PyObject *y) #endif n = PyObject_GetAttrString(y, "__class__"); - if (n == NULL || n == Py_None) - { + if(n == NULL || n == Py_None) { Py_XDECREF(n); return NULL; } p = PyObject_GetAttrString(n, "__name__"); - if (p == NULL || p == Py_None) - { + if(p == NULL || p == Py_None) { Py_XDECREF(p); return NULL; } diff --git a/src/modules/app_python3/python_support.h b/src/modules/app_python3/python_support.h index 8859f9a32aa..a491600d94f 100644 --- a/src/modules/app_python3/python_support.h +++ b/src/modules/app_python3/python_support.h @@ -20,7 +20,7 @@ */ #ifndef _PYTHON_SUPPORT_H -#define _PYTHON_SUPPORT_H +#define _PYTHON_SUPPORT_H #include #include