Re: How to get the attributes of a lua class without their names, using luabind

Crashy <[email protected]> Thu, 10 Dec 2015 05:07:38 -0700 (MST)
Newsgroups gmane.comp.lang.lua.bind.user
Message-ID <[email protected]>
Hi !

I hate to 'bump' very old topics, but I'm facing the same problem while
writing a lua debugger.
I can access values by name, but using the iterator results in an infinite
loop.
Iterators are doing well when the object is a simple table though, it only
fails when the object is a luabind class.

Does anybody has a solution to iterate over member variables of a luabind
class ?

Thanks !


Thibault Ehrhart wrote
> Hello everyone,
> 
> I have a Lua class (defined using luabind's 'class' keyword) and I'd like
> to get the value of the attributes defined in Lua, with C++.
> 
> In the code below, I've defined a class, created an instance "foo" and set
> a custom attribute "bar" to that instance. Finally, I am calling a C++
> function which has to print the attributes of the instance passed as a
> parameter.
> 
> Here's the Lua code :
> 
>     class 'MyLuaClass'
>     function MyLuaClass:__init() end
> 
>     foo = MyLuaClass()
>     foo.bar = "baz";
>     PrintAttributes(foo);
> 
> And now the C++ code of the PrintAttributes function, obj is a class
> instance:
> 
>     void PrintAttributes(luabind::object &obj)
>     {
>         // Direct access works
>         std::cout << obj["bar"] << std::endl; // Will print "baz" :-)
> 
>         // But what if I don't know the name of the variable(s)?
>         for (luabind::iterator it(obj); it != luabind::iterator(); ++it)
>         {
>             // Doesn't work since obj is an userdata
>         }
>     }
> 
> I've also tried to use class_info but it only works with properties
> defined
> in a C++ class. Is there a way to access those defined with Lua?
> 
> Regards,





--
View this message in context: http://lua.2524044.n2.nabble.com/How-to-get-the-attributes-of-a-lua-class-without-their-names-using-luabind-tp7654070p7670726.html
Sent from the Lua C++ Bind mailing list archive at Nabble.com.

------------------------------------------------------------------------------