From 6409436d74e5831d362a4e4a102f4ed5527c4562 Mon Sep 17 00:00:00 2001 From: Alexander Lantsev Date: Mon, 18 Apr 2016 17:02:29 +0000 Subject: MirLua: returned some lua types support as lparam/wparam git-svn-id: http://svn.miranda-ng.org/main/trunk@16715 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/MirLua/src/mlua_utils.cpp | 81 ++++++++++++--------------------------- 1 file changed, 25 insertions(+), 56 deletions(-) (limited to 'plugins/MirLua/src/mlua_utils.cpp') diff --git a/plugins/MirLua/src/mlua_utils.cpp b/plugins/MirLua/src/mlua_utils.cpp index d5ca5ed0bb..94e5e41434 100644 --- a/plugins/MirLua/src/mlua_utils.cpp +++ b/plugins/MirLua/src/mlua_utils.cpp @@ -165,6 +165,31 @@ int luaM_tonumber(lua_State *L) return 1; } +UINT_PTR luaM_tomparam(lua_State *L, int idx) +{ + switch (lua_type(L, idx)) + { + case LUA_TBOOLEAN: + return lua_toboolean(L, idx); + case LUA_TSTRING: + return (UINT_PTR)lua_tostring(L, idx); + case LUA_TLIGHTUSERDATA: + return (UINT_PTR)lua_touserdata(L, idx); + case LUA_TNUMBER: + { + if (lua_isinteger(L, 1)) + { + lua_Integer value = lua_tointeger(L, 1); + return value <= INTPTR_MAX + ? (UINT_PTR)value + : NULL; + } + } + default: + return NULL; + } +} + int luaM_interpolate(lua_State *L) { const char *string = luaL_checkstring(L, 1); @@ -202,62 +227,6 @@ int luaM_interpolate(lua_State *L) return 1; } -WPARAM luaM_towparam(lua_State *L, int idx) -{ - if (lua_islightuserdata(L, idx)) - { - return (WPARAM)lua_touserdata(L, idx); - } - - char text[512]; - mir_snprintf(text, "Type %s is not supported. Use topointer(x) instead", luaL_typename(L, idx)); - Log(text); - if (db_get_b(NULL, MODULE, "PopupOnObsolete", 0)) - ShowNotification(MODULE, text, MB_OK | MB_ICONWARNING, NULL); - - switch (lua_type(L, idx)) - { - case LUA_TBOOLEAN: - return lua_toboolean(L, idx); - case LUA_TNUMBER: - return (WPARAM)lua_tonumber(L, idx); - case LUA_TSTRING: - return (WPARAM)lua_tostring(L, idx); - break; - default: - return NULL; - } -} - -LPARAM luaM_tolparam(lua_State *L, int idx) -{ - if (lua_islightuserdata(L, idx)) - { - return (LPARAM)lua_touserdata(L, idx); - } - - char text[512]; - mir_snprintf(text, "Type %s is not supported. Use topointer(x) instead", luaL_typename(L, idx)); - Log(text); - if (db_get_b(NULL, MODULE, "PopupOnObsolete", 0)) - ShowNotification(MODULE, text, MB_OK | MB_ICONWARNING, NULL); - - switch (lua_type(L, idx)) - { - case LUA_TBOOLEAN: - return lua_toboolean(L, idx); - case LUA_TNUMBER: - return (LPARAM)lua_tonumber(L, idx); - case LUA_TSTRING: - return (LPARAM)lua_tostring(L, idx); - case LUA_TUSERDATA: - case LUA_TLIGHTUSERDATA: - return (LPARAM)lua_touserdata(L, idx); - default: - return NULL; - } -} - bool luaM_toboolean(lua_State *L, int idx) { if (lua_isnumber(L, idx)) -- cgit v1.2.3