diff options
Diffstat (limited to 'plugins/MirLua/Modules/m_json')
-rw-r--r-- | plugins/MirLua/Modules/m_json/m_json.vcxproj | 28 | ||||
-rw-r--r-- | plugins/MirLua/Modules/m_json/src/main.cpp | 88 | ||||
-rw-r--r-- | plugins/MirLua/Modules/m_json/src/metatable.cpp | 135 | ||||
-rw-r--r-- | plugins/MirLua/Modules/m_json/src/stdafx.cxx | 1 | ||||
-rw-r--r-- | plugins/MirLua/Modules/m_json/src/stdafx.h | 35 |
5 files changed, 0 insertions, 287 deletions
diff --git a/plugins/MirLua/Modules/m_json/m_json.vcxproj b/plugins/MirLua/Modules/m_json/m_json.vcxproj deleted file mode 100644 index 538ed63f5c..0000000000 --- a/plugins/MirLua/Modules/m_json/m_json.vcxproj +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectName>m_json</ProjectName>
- <ProjectGuid>{8A645067-7F45-4E65-AAFC-AFDA81C29A1D}</ProjectGuid>
- </PropertyGroup>
- <ImportGroup Label="PropertySheets">
- <Import Project="$(ProjectDir)..\module.props" />
- </ImportGroup>
-</Project>
\ No newline at end of file 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 <Windows.h>
-#include <lua.hpp>
-#include <m_system.h>
-
-#include <m_json.h>
-#include <m_string.h>
-
-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 |