From 2726a8024b2c8a9a136c00e19f48879a10276a05 Mon Sep 17 00:00:00 2001 From: Janos Kovacs Date: Fri, 11 Jan 2013 01:02:24 +0200 Subject: [PATCH] lua-decision: add C access routines to mrp_lua_mdb_select_t --- src/core/lua-decision/mdb.c | 61 ++++++++++++++++++++++++++++++++++++++++++++- src/core/lua-decision/mdb.h | 16 ++++++++++++ 2 files changed, 76 insertions(+), 1 deletion(-) diff --git a/src/core/lua-decision/mdb.c b/src/core/lua-decision/mdb.c index c05e38d..9e661df 100644 --- a/src/core/lua-decision/mdb.c +++ b/src/core/lua-decision/mdb.c @@ -357,11 +357,70 @@ int mrp_lua_push_select(lua_State *L,mrp_lua_mdb_select_t *sel,bool singleval) return 1; } -const char * mrp_lua_select_name(mrp_lua_mdb_select_t *sel) +const char *mrp_lua_select_name(mrp_lua_mdb_select_t *sel) { return (sel && sel->name) ? sel->name : ""; } +int mrp_lua_select_get_column_index(mrp_lua_mdb_select_t *sel, + const char *colnam) +{ + mrp_lua_strarray_t *cols; + size_t colidx; + + if (sel && colnam && (cols = sel->columns)) { + for (colidx = 0; colidx < cols->nstring; colidx++) { + if (!strcmp(colnam, cols->strings[colidx])) + return (int)colidx; + } + } + + return -1; +} + +int mrp_lua_select_get_column_count(mrp_lua_mdb_select_t *sel) +{ + return sel ? mql_result_rows_get_row_column_count(sel->result) : -1; +} + +mqi_data_type_t mrp_lua_select_get_column_type(mrp_lua_mdb_select_t *sel, + int colidx) +{ + return sel ? mql_result_rows_get_row_column_type(sel->result, colidx) : -1; +} + +int mrp_lua_select_get_row_count(mrp_lua_mdb_select_t *sel) +{ + return sel ? mql_result_rows_get_row_count(sel->result) : -1; +} + +const char *mrp_lua_select_get_string(mrp_lua_mdb_select_t *sel, + int colidx, int rowidx, + char * buf, int len) +{ + return sel ? mql_result_rows_get_string(sel->result, colidx,rowidx, + buf,len) : NULL; +} + +int32_t mrp_lua_select_get_integer(mrp_lua_mdb_select_t *sel, + int colidx, int rowidx) +{ + return sel ? mql_result_rows_get_integer(sel->result, colidx,rowidx) : 0; +} + +uint32_t mrp_lua_select_get_unsigned(mrp_lua_mdb_select_t *sel, + int colidx, int rowidx) +{ + return sel ? mql_result_rows_get_unsigned(sel->result, colidx,rowidx) : 0; +} + +double mrp_lua_select_get_floating(mrp_lua_mdb_select_t *sel, + int colidx, int rowidx) +{ + return sel ? mql_result_rows_get_floating(sel->result,colidx,rowidx) : 0.0; +} + + int mrp_lua_dependency_add(lua_State *L, const char *name) { mrp_lua_mdb_dependency_t *dep; diff --git a/src/core/lua-decision/mdb.h b/src/core/lua-decision/mdb.h index 6c7adbb..86c5bd7 100644 --- a/src/core/lua-decision/mdb.h +++ b/src/core/lua-decision/mdb.h @@ -48,6 +48,22 @@ mrp_lua_mdb_select_t *mrp_lua_select_check(lua_State *L, int idx); mrp_lua_mdb_select_t *mrp_lua_to_select(lua_State *L, int idx); int mrp_lua_push_select(lua_State *L,mrp_lua_mdb_select_t *sel,bool singleval); const char * mrp_lua_select_name(mrp_lua_mdb_select_t *sel); +int mrp_lua_select_get_column_index(mrp_lua_mdb_select_t *sel, + const char *colnam); +int mrp_lua_select_get_column_count(mrp_lua_mdb_select_t *sel); +mqi_data_type_t mrp_lua_select_get_column_type(mrp_lua_mdb_select_t *sel, + int colidx); +int mrp_lua_select_get_row_count(mrp_lua_mdb_select_t *sel); +const char *mrp_lua_select_get_string(mrp_lua_mdb_select_t *sel, + int colidx, int rowidx, + char * buf, int len); +int32_t mrp_lua_select_get_integer(mrp_lua_mdb_select_t *sel, + int colidx, int rowidx); + +uint32_t mrp_lua_select_get_unsigned(mrp_lua_mdb_select_t *sel, + int colidx, int rowidx); +double mrp_lua_select_get_floating(mrp_lua_mdb_select_t *sel, + int colidx, int rowidx); int mrp_lua_dependency_add(lua_State *L, const char *name); -- 2.7.4