lua-users home
lua-l archive

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


ah ok, i see, they i was wondering y i wasnt getting any arguments,
so doing something like returning a call metatable(__call) when u call Load
and it goes to get(__index)
should fix the problem ?
and i guess its the fact that im calling a function but call doesnt handle
it, is the reason y the script
exits after the function it called.

    -Ben

----- Original Message -----
From: "Peter Shook" <pshook@hotmail.com>
To: <lua@bazar2.conectiva.com.br>
Sent: Monday, May 19, 2003 4:16 AM
Subject: Re: calling class functions from lua


>
> Lava_Monkey wrote:
> >can anyone help ?
>
> I'll try, but I don't think I can convey all the concepts in one email.
>
> I assume you want obj:Load('it') to call the 'Load' method in
> class 'Foo', and 'obj' is a userdata with a pointer to an object of Class
> 'Foo'.
>
> obj:Load'it'
> is the same as obj:Load('it')
> is the same as obj.Load(obj, 'it')
> is the same as local method = obj.Load; method(obj, 'it')
>
> The get and call are separate.
>
> The get part is easy if your __index is a table, the method is just found
in
> the table.
>
> If __index is a function, then during the get, the index event will call
the
> index metamethod with two things on the stack.
> 1) the userdata in 'obj'
> 2) the index which is the string "Load"
>
> The get should return 1 object off the top of the stack.  The get should
> return either a Lua function, a C closure, or a table which has a call
> metamethod, or a userdata which has a call metamethod.  Anything else will
> cause the second part  -- method(obj, 'it') -- to fail.
>
> During the call, if the method is a function, the stack will have the
> userdata followed by the arguments.  In this case:
> 1) the userdata in 'obj'
> 2) the string "it"
>
> You'll need to think about this before we continue.
> Try some of this stuff out in a Lua script with simple tables before you
try
> it in C with userdata.
>
> - Peter Shook
>
> _________________________________________________________________
> MSN 8 with e-mail virus protection service: 2 months FREE*
> http://join.msn.com/?page=features/virus
>