[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Replace LUA table
- From: <Andreas.Volz@...>
- Date: Tue, 28 Aug 2007 19:10:12 +0200
Hello,
I try to replace a LUA table in C++. I do this in LUA:
tc=TestClass:new ()
a={10,11,12,13,14,15,16,17,18,19,20,21}
tc:testX (a)
print (a[1])
print (a[2])
print (a[3])
Printed from LUA:
10
11
12
What does testX()?
printf ("dump1:\n");
stackDump (L);
array2table( L, lobj );
lua_remove(L, 2);
printf ("dump2:\n");
stackDump (L);
... and...
void array2table( lua_State *L, lua_Object lobj )
{
if (lua_istable (L, lobj))
{
printf ("element is table");
int arr[4] = { 5,100,-20,0 };
lua_newtable(L); // table
for (int i=0; i<4; i++)
{
lua_pushinteger(L, i+1); // table,key
lua_pushinteger(L, arr[i]); // table,key,value
lua_settable(L,-3); // table
}
}
}
This in printed in C++:
31018474 PID:1fe001a TID:53001e dump1:
31018474 PID:1fe001a TID:53001e stack dump start
31018474 PID:1fe001a TID:53001e userdata
31018475 PID:1fe001a TID:53001e
31018475 PID:1fe001a TID:53001e table
31018476 PID:1fe001a TID:53001e table dump start
31018476 PID:1fe001a TID:53001e 10
31018477 PID:1fe001a TID:53001e 11
31018477 PID:1fe001a TID:53001e 12
31018478 PID:1fe001a TID:53001e 13
31018479 PID:1fe001a TID:53001e 14
31018479 PID:1fe001a TID:53001e 15
31018480 PID:1fe001a TID:53001e 16
31018480 PID:1fe001a TID:53001e 17
31018481 PID:1fe001a TID:53001e 18
31018481 PID:1fe001a TID:53001e 19
31018482 PID:1fe001a TID:53001e 20
31018485 PID:1fe001a TID:53001e 21
31018485 PID:1fe001a TID:53001e table dump end
31018486 PID:1fe001a TID:53001e
31018487 PID:1fe001a TID:53001e
31018488 PID:1fe001a TID:53001e stack dump end
31018489 PID:1fe001a TID:53001e element is table
31018490 PID:1fe001a TID:53001e dump2:
31018491 PID:1fe001a TID:53001e stack dump start
31018492 PID:1fe001a TID:53001e userdata
31018492 PID:1fe001a TID:53001e
31018493 PID:1fe001a TID:53001e table
31018493 PID:1fe001a TID:53001e table dump start
31018495 PID:1fe001a TID:53001e 5
31018495 PID:1fe001a TID:53001e 100
31018496 PID:1fe001a TID:53001e -20
31018496 PID:1fe001a TID:53001e 0
31018497 PID:1fe001a TID:53001e table dump end
31018497 PID:1fe001a TID:53001e
31018498 PID:1fe001a TID:53001e
31018498 PID:1fe001a TID:53001e stack dump end
As you could see in 'dump2' I replaced the input table with my own table. Looks good so far. But why does LUA then print "10 11 12"? I would expect "5 100 -20". How could I access the table I replace in C++?
If I don't "lua_remove(L, 2);" then the new table is after the input table. But is there any way to access this new table in LUA?
regards
Andreas
--
Dipl.-Inf. (FH) Andreas Volz, ES1
Elektrobit
Phone: +49 (9131) 7701 167, mailto:Andreas.Volz@elektrobit.com
Fax: +49 (9131) 7701 333, http://www.elektrobit.com
Elektrobit Automotive GmbH, Am Wolfsmantel 46, 91058 Erlangen, Germany
Managing Director Otto Fößel
Register Court Fürth HRB 4886
----------------------------------------------------------------
Please note: This e-mail may contain confidential information
intended solely for the addressee. If you have received this
e-mail in error, please do not disclose it to anyone, notify
the sender promptly, and delete the message from your system.
Thank you.