Skip to content

Commit d384ee0

Browse files
committed
1 parent c163cbc commit d384ee0

File tree

1 file changed

+31
-8
lines changed

1 file changed

+31
-8
lines changed

Assets/Plugins/Slua_Managed/LuaState.cs

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,15 @@ public LuaTable(LuaState state)
301301
LuaDLL.lua_newtable(L);
302302
valueref = LuaDLL.luaL_ref(L, LuaIndexes.LUA_REGISTRYINDEX);
303303
}
304+
305+
public object get(string key,bool wholekey=false) {
306+
return state.getObject(valueref, key, wholekey);
307+
}
308+
309+
public void set(string key,object v,bool wholekey=false) {
310+
state.setObject(valueref, key, v, wholekey);
311+
}
312+
304313
public object this[string key]
305314
{
306315
get
@@ -1366,18 +1375,25 @@ internal byte[] loadFile (string fn, ref string absoluteFn)
13661375
}
13671376

13681377

1369-
internal object getObject(string key)
1378+
internal object getObject(string key, bool wholekey=false)
13701379
{
13711380
LuaDLL.lua_pushglobaltable(L);
1372-
object o = getObject(key.Split(new char[] { '.' }));
1381+
object o;
1382+
if (wholekey)
1383+
o = getObject(new string[] { key });
1384+
else
1385+
o = getObject(key.Split(new char[] { '.' }));
13731386
LuaDLL.lua_pop(L, 1);
13741387
return o;
13751388
}
13761389

1377-
internal void setObject(string key, object v)
1390+
internal void setObject(string key, object v, bool wholekey = false)
13781391
{
13791392
LuaDLL.lua_pushglobaltable(L);
1380-
setObject(key.Split(new char[] { '.' }), v);
1393+
if (wholekey)
1394+
setObject(new string[] { key }, v);
1395+
else
1396+
setObject(key.Split(new char[] { '.' }), v);
13811397
LuaDLL.lua_pop(L, 1);
13821398
}
13831399

@@ -1396,11 +1412,15 @@ internal object getObject(string[] remainingPath)
13961412
}
13971413

13981414

1399-
internal object getObject(int reference, string field)
1415+
internal object getObject(int reference, string field, bool wholekey = false)
14001416
{
14011417
int oldTop = LuaDLL.lua_gettop(L);
14021418
LuaDLL.lua_getref(L, reference);
1403-
object returnValue = getObject(field.Split(new char[] { '.' }));
1419+
object returnValue;
1420+
if (wholekey)
1421+
returnValue = getObject(new string[]{field});
1422+
else
1423+
returnValue = getObject(field.Split(new char[] { '.' }));
14041424
LuaDLL.lua_settop(L, oldTop);
14051425
return returnValue;
14061426
}
@@ -1450,11 +1470,14 @@ internal void setObject(string[] remainingPath, object o)
14501470
}
14511471

14521472

1453-
internal void setObject(int reference, string field, object o)
1473+
internal void setObject(int reference, string field, object o, bool wholekey = false)
14541474
{
14551475
int oldTop = LuaDLL.lua_gettop(L);
14561476
LuaDLL.lua_getref(L, reference);
1457-
setObject(field.Split(new char[] { '.' }), o);
1477+
if (wholekey)
1478+
setObject(new string[] { field }, o);
1479+
else
1480+
setObject(field.Split(new char[] { '.' }), o);
14581481
LuaDLL.lua_settop(L, oldTop);
14591482
}
14601483

0 commit comments

Comments
 (0)