From 39e461bb614d75a6f23511a016afaeb3aba35f1a Mon Sep 17 00:00:00 2001 From: aunsane Date: Tue, 10 Oct 2017 21:55:12 +0300 Subject: MirLua: - m_json moved into base plugin - added m_http module -version bump --- plugins/MirLua/Modules/m_json/src/main.cpp | 88 --------------- plugins/MirLua/Modules/m_json/src/metatable.cpp | 135 ------------------------ plugins/MirLua/Modules/m_json/src/stdafx.cxx | 1 - plugins/MirLua/Modules/m_json/src/stdafx.h | 35 ------ 4 files changed, 259 deletions(-) delete mode 100644 plugins/MirLua/Modules/m_json/src/main.cpp delete mode 100644 plugins/MirLua/Modules/m_json/src/metatable.cpp delete mode 100644 plugins/MirLua/Modules/m_json/src/stdafx.cxx delete mode 100644 plugins/MirLua/Modules/m_json/src/stdafx.h (limited to 'plugins/MirLua/Modules/m_json/src') diff --git a/plugins/MirLua/Modules/m_json/src/main.cpp b/plugins/MirLua/Modules/m_json/src/main.cpp deleted file mode 100644 index 3774442d7f..0000000000 --- a/plugins/MirLua/Modules/m_json/src/main.cpp +++ /dev/null @@ -1,88 +0,0 @@ -#include "stdafx.h" - -static int lua_Decode(lua_State *L) -{ - const char *string = luaL_checkstring(L, 1); - - JSONNode *node = json_parse(string); - new (L) JSON(node); - luaL_setmetatable(L, MT_JSON); - - return 1; -} - -static int lua_Encode(lua_State *L) -{ - switch (lua_type(L, 1)) - { - case LUA_TNIL: - lua_pushliteral(L, "null"); - break; - case LUA_TBOOLEAN: - lua_pushstring(L, lua_toboolean(L, 1) ? "true" : "false"); - break; - case LUA_TNUMBER: - { - if (lua_isinteger(L, 1)) { - lua_pushfstring(L, "%I", lua_tointeger(L, 1)); - break; - } - char decpoint = lua_getlocaledecpoint(); - if (decpoint != '.') { - char p[2] = { decpoint }; - luaL_gsub(L, lua_tostring(L, 1), p, "."); - } - else - lua_pushfstring(L, "%f", lua_tonumber(L, 1)); - break; - } - case LUA_TSTRING: - lua_pushfstring(L, "\"%s\"", lua_tostring(L, 1)); - break; - case LUA_TTABLE: - { - JSONNode node; - lua_pushnil(L); - lua_pushvalue(L, 1); - lua2json(L, node); - lua_pop(L, 2); - lua_pushstring(L, node.write().c_str()); - break; - } - case LUA_TUSERDATA: - { - JSONNode &node = *((JSON*)luaL_checkudata(L, 1, MT_JSON))->node; - lua_pushstring(L, node.write().c_str()); - break; - } - case LUA_TLIGHTUSERDATA: - if (lua_touserdata(L, 1) == NULL) - { - lua_pushliteral(L, "null"); - break; - } - default: - luaL_argerror(L, 1, luaL_typename(L, 1)); - } - - return 1; -} - -static const luaL_Reg methods[] = -{ - { "Decode", lua_Decode }, - { "Encode", lua_Encode }, - - { NULL, NULL } -}; - -extern "C" LUAMOD_API int luaopen_m_json(lua_State *L) -{ - luaL_newlib(L, methods); - - luaL_newmetatable(L, MT_JSON); - luaL_setfuncs(L, jsonApi, 0); - lua_pop(L, 1); - - return 1; -} \ No newline at end of file diff --git a/plugins/MirLua/Modules/m_json/src/metatable.cpp b/plugins/MirLua/Modules/m_json/src/metatable.cpp deleted file mode 100644 index d7bfab5583..0000000000 --- a/plugins/MirLua/Modules/m_json/src/metatable.cpp +++ /dev/null @@ -1,135 +0,0 @@ -#include "stdafx.h" - -void lua2json(lua_State *L, JSONNode &node) -{ - switch (lua_type(L, -1)) - { - case LUA_TNIL: - node.nullify(); - break; - case LUA_TSTRING: - node = lua_tostring(L, -1); - break; - case LUA_TBOOLEAN: - node = lua_toboolean(L, -1) != 0; - break; - case LUA_TNUMBER: - { - lua_Integer val = lua_tointeger(L, -1); - if (lua_isinteger(L, -1) && val >= LONG_MIN && val <= LONG_MIN) - node = (long)val; - else - node = lua_tonumber(L, -1); - break; - } - case LUA_TTABLE: - { - ptrA name(mir_strdup(node.name())); - node.cast(JSON_ARRAY); - node.set_name((char*)name); - - lua_pushnil(L); - while (lua_next(L, -2) != 0) { - JSONNode child; - if (!lua_isnumber(L, -2)) { - if (node.type() == JSON_ARRAY) { - node.cast(JSON_NODE); - node.set_name((char*)name); - } - const char *key = lua_tostring(L, -2); - child.set_name(key); - } - lua2json(L, child); - node << child; - - lua_pop(L, 1); - } - - break; - } - } -} - -static int json__index(lua_State *L) -{ - JSONNode &node = *((JSON*)luaL_checkudata(L, 1, MT_JSON))->node; - - switch (node.type()) - { - case JSON_NULL: - lua_pushnil(L); - break; - case JSON_STRING: - lua_pushstring(L, node.as_string().c_str()); - break; - case JSON_NUMBER: - lua_pushnumber(L, node.as_int()); - break; - case JSON_BOOL: - lua_pushboolean(L, node.as_bool()); - break; - case JSON_NODE: - case JSON_ARRAY: - new (L) JSONNode(node); - luaL_setmetatable(L, MT_JSON); - } - - return 1; -} - -static int json__newindex(lua_State *L) -{ - JSONNode &node = *((JSON*)luaL_checkudata(L, 1, MT_JSON))->node; - const char *key = lua_tostring(L, 2); - - JSONNode child = node[key]; - if (child.isnull()) { - child.set_name(key); - lua2json(L, child); - node << child; - return 0; - } - - lua2json(L, child); - node[key] = child; - - return 0; -} - -static int json__len(lua_State *L) -{ - JSONNode &node = *((JSON*)luaL_checkudata(L, 1, MT_JSON))->node; - - lua_pushnumber(L, node.size()); - - return 1; -} - -static int json__tostring(lua_State *L) -{ - JSONNode &node = *((JSON*)luaL_checkudata(L, 1, MT_JSON))->node; - - lua_pushstring(L, node.write().c_str()); - - return 1; -} - -static int json__gc(lua_State *L) -{ - JSON *json = (JSON*)luaL_checkudata(L, 1, MT_JSON); - - delete json; - - return 0; -} - -const struct luaL_Reg jsonApi[] = -{ - { "__index", json__index }, - { "__newindex", json__newindex }, - { "__len", json__len }, - { "__tostring", json__tostring }, - { "__gc", json__gc }, - - { NULL, NULL } -}; diff --git a/plugins/MirLua/Modules/m_json/src/stdafx.cxx b/plugins/MirLua/Modules/m_json/src/stdafx.cxx deleted file mode 100644 index 1577c4e3bc..0000000000 --- a/plugins/MirLua/Modules/m_json/src/stdafx.cxx +++ /dev/null @@ -1 +0,0 @@ -#include "stdafx.h" \ No newline at end of file diff --git a/plugins/MirLua/Modules/m_json/src/stdafx.h b/plugins/MirLua/Modules/m_json/src/stdafx.h deleted file mode 100644 index dcbdfbd56d..0000000000 --- a/plugins/MirLua/Modules/m_json/src/stdafx.h +++ /dev/null @@ -1,35 +0,0 @@ -#pragma once - -#include -#include -#include - -#include -#include - -struct JSON -{ - JSONNode *node; - bool bDelete; - - JSON(JSONNode &refNode, bool bCopy = false) - : node(bCopy ? json_copy(&refNode) : &refNode), bDelete(bCopy) { } - JSON(JSONNode *n, bool bD = true) - : node(n), bDelete(bD) { } - ~JSON() - { - if (bDelete) - json_delete(node); - } - - __inline void* operator new(size_t size, lua_State *L) - { - return lua_newuserdata(L, size); - } -}; - -void lua2json(lua_State *L, JSONNode &node); - -extern const luaL_Reg jsonApi[]; - -#define MT_JSON "JSON" \ No newline at end of file -- cgit v1.2.3