[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Table Constructor
- From: Marco Antonio Abreu <mabreu.ti@...>
- Date: Wed, 29 Apr 2009 12:30:46 -0300
Hi Guys,
I want to reopen the topic about table constructor created by Jason Santos:
"Is there a reason why there is no function in the table library to mirror lua_createtable() from the C API?
Would it be a good idea to add such a function?
If
there are performance tuning opportunities to be explored by reducing
the amount of table.inserts (Yes, I've read Roberto's article on Lua
Gems), I would like to be able to make them dynamically and in pure lua".
I suppose it will be very useful if we could create a table with all
occurrencies we need direct from Lua. Like Luiz Henrique said "a C
binding for lua_createtable" should be nice, but I thought in something beyond. I suppose it could be interesting if we could give the default value to the occurrences created by the function and, in case of a function, it could be called to return the valeu and its key. What do you think about this?
function createtable( a, n, f, c )
collectgarbage( 'stop' )
-- this line below should be the memory allocation with all necessary space for the occurencies - lua_createtable( L, a, n )
local result = loadstring( 'return {' .. string.rep( 'false,', n + a ) .. '}' )()
if c or type( f ) ~= 'function' then
for i = 1, a do
result[ i ] = f
end
for i = 1, n do
result[ tostring( i ) ] = f
end
else
local k, v
for i = 1, a do
v, k = f( i, 'a' )
result[ k or i ] = v
end
for i = 1, n do
v, k = f( i, 'n' )
result[ tostring( k or i ) ] = v
end
end
collectgarbage( 'restart' )
return result
end
--
Marco Antonio Abreu
Analista de Sistemas