@@ -301,6 +301,15 @@ public LuaTable(LuaState state)
301
301
LuaDLL . lua_newtable ( L ) ;
302
302
valueref = LuaDLL . luaL_ref ( L , LuaIndexes . LUA_REGISTRYINDEX ) ;
303
303
}
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
+
304
313
public object this [ string key ]
305
314
{
306
315
get
@@ -1366,18 +1375,25 @@ internal byte[] loadFile (string fn, ref string absoluteFn)
1366
1375
}
1367
1376
1368
1377
1369
- internal object getObject ( string key )
1378
+ internal object getObject ( string key , bool wholekey = false )
1370
1379
{
1371
1380
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 [ ] { '.' } ) ) ;
1373
1386
LuaDLL . lua_pop ( L , 1 ) ;
1374
1387
return o ;
1375
1388
}
1376
1389
1377
- internal void setObject ( string key , object v )
1390
+ internal void setObject ( string key , object v , bool wholekey = false )
1378
1391
{
1379
1392
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 ) ;
1381
1397
LuaDLL . lua_pop ( L , 1 ) ;
1382
1398
}
1383
1399
@@ -1396,11 +1412,15 @@ internal object getObject(string[] remainingPath)
1396
1412
}
1397
1413
1398
1414
1399
- internal object getObject ( int reference , string field )
1415
+ internal object getObject ( int reference , string field , bool wholekey = false )
1400
1416
{
1401
1417
int oldTop = LuaDLL . lua_gettop ( L ) ;
1402
1418
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 [ ] { '.' } ) ) ;
1404
1424
LuaDLL . lua_settop ( L , oldTop ) ;
1405
1425
return returnValue ;
1406
1426
}
@@ -1450,11 +1470,14 @@ internal void setObject(string[] remainingPath, object o)
1450
1470
}
1451
1471
1452
1472
1453
- internal void setObject ( int reference , string field , object o )
1473
+ internal void setObject ( int reference , string field , object o , bool wholekey = false )
1454
1474
{
1455
1475
int oldTop = LuaDLL . lua_gettop ( L ) ;
1456
1476
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 ) ;
1458
1481
LuaDLL . lua_settop ( L , oldTop ) ;
1459
1482
}
1460
1483
0 commit comments