lua-users home
lua-l archive

Replace LUA table

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


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.

AltStyle によって変換されたページ (->オリジナル) /