# HG changeset patch # User jbe # Date 1406490334 -7200 # Node ID dbe5881e4ecd38845fc84156ce8b4c51024c6579 # Parent 209f8ce39c5a78f72a1837e7f98d8aca72549479 Added function json.setnull(...) diff -r 209f8ce39c5a -r dbe5881e4ecd libraries/json/json.c --- a/libraries/json/json.c Sun Jul 27 21:25:26 2014 +0200 +++ b/libraries/json/json.c Sun Jul 27 21:45:34 2014 +0200 @@ -272,6 +272,24 @@ return json_path(L, JSON_PATH_ISNULL); } +static int json_setnull(lua_State *L) { + lua_settop(L, 2); + lua_pushvalue(L, JSON_UPVAL_METATABLE); + lua_setmetatable(L, 1); + lua_pushvalue(L, 1); + lua_rawget(L, JSON_UPVAL_SHADOWTBL); + if (lua_isnil(L, -1)) { + lua_newtable(L); + lua_pushvalue(L, 1); + lua_pushvalue(L, -2); + lua_rawset(L, JSON_UPVAL_SHADOWTBL); + } + lua_pushvalue(L, 2); + lua_pushvalue(L, JSON_UPVAL_NULLMARK); + lua_rawset(L, -3); + return 0; +} + static int json_len(lua_State *L) { lua_settop(L, 1); lua_pushvalue(L, 1); @@ -307,6 +325,7 @@ {"get", json_get}, {"type", json_type}, {"isnull", json_isnull}, + {"setnull", json_setnull}, {NULL, NULL} };