[Date Prev][Date Next][Thread Prev][Thread Next]
- Subject: Re: __mul()
- From: Christopher Eykamp <chris@...>
- Date: Sat, 20 Mar 2010 19:21:07 -0700
On 3/20/2010 7:08 PM, Geoff Leyland wrote:
On 21/03/2010, at 3:04 PM, Christopher Eykamp wrote:
If this works:
newpt = bot:getLoc():__mul(2)
newpt = bot:getLoc() * 2
Instead I get an error: "attempt to perform arithmetic on a userdata value."
Some quick background: bot:getLoc() is a C++ method that returns a pointer to a point stored in C++. I am binding Lua and C++ using Lunar. __mul() is a method added in Lua (I have also tried adding it via C++). How can I get arithmetic methods to work on userdata?
I know nothing about Lunar, but does
newpt = getmetatable(bot:getLoc()):__mul(2)
Curiously, no, though it does get to the __mul() function before giving
me this error:
"calling 'getxy' on bad self (Point expected, got table)."
So it's able to find the function properly, but in this case, it seems
to get confused as to what the self object is.
This, however, does work:
newpt = getmetatable(bot:getLoc()).__mul(bot:getLoc(), 2)