Nevermind... I will try to reproduce later.
And I need to find out what's the use for having these lua-only
classes... :)
Am 12.12.2015 um 15:10 schrieb jean-baptiste griffo:
> This works for me too in such a case, but it fails if the object is a
> luabind 'class' object, as in the OP message:
>
> class 'MyLuaClass'
> function MyLuaClass:__init() end
>
> foo = MyLuaClass()
> foo.bar = "baz";
> PrintAttributes(foo);
>
>
>
> On 12/12/2015 14:48, Pavel Kovalenko wrote:
>> This example works for me (but I use another fork:
>> https://github.com/decimad/luabind-deboostified)
>>
>> lua code:
>>
>> local obj = {}
>> obj.foo = function (self)
>> puts("obj:foo")
>> end
>> obj.data = 42
>>
>> dump_object(obj)
>>
>> cpp code:
>>
>> void dump_object(const luabind::object &obj)
>> {
>> for (luabind::iterator it(obj), end; it!=end; it++)
>> {
>> auto s = object_cast<std::string>(it.key());
>> puts(s.c_str());
>> }
>> }
>>
>> What kind of lua object are you trying to iterate over?
>> On 12/12/2015 0:23 AM, jean-baptiste griffo wrote:
>>> Hi,
>>>
>>> Well it's weird but I don't remember the exact fork I'm using, I think I
>>> use this one
>>> https://github.com/mrsharpoblunto/LHP/tree/master/luabind-0.7/include/luabind
>>> I do not use the official release because I had some problems related to
>>> size_t & x64 builds, and this fork solved it.
>>>
>>> Here is the c++ code, please note that at this point I'm 100% sure the
>>> object on the stack is the "self" of my class instance
>>>
>>> //get the luabind object from the stack
>>> luabind::object o(luabind::from_stack(L, lastIndex));
>>>
>>> for (luabind::iterator i(o), end; i != end; ++i)
>>> {
>>> try
>>> {
>>> std::string strKey = luabind::object_cast<std::string>(i.key());
>>> printf("%s\n",strKey.c_str());
>>> }
>>> catch(luabind::cast_failed & e)
>>> {
>>> printf("error\n");
>>> }
>>> }
>>>
>>> ----------
>>>
>>> As a result, it simply prints "error" indefinitely.
>>>
>>> Thanks.
>>>
>>>
>>> On 11/12/2015 17:57, Pavel Kovalenko wrote:
>>>> Hi,
>>>>
>>>> I don't have such problem (using luabind-deboostified fork). Could you
>>>> show the code which causes an infinite loop? Which fork do you use?
>>>>
>>>> On 12/11/2015 3:00 PM, luabind-user-request@... wrote:
>>>>> Send luabind-user mailing list submissions to
>>>>> luabind-user@...
>>>>>
>>>>> To subscribe or unsubscribe via the World Wide Web, visit
>>>>> https://lists.sourceforge.net/lists/listinfo/luabind-user
>>>>> or, via email, send a message with subject or body 'help' to
>>>>> luabind-user-request@...
>>>>>
>>>>> You can reach the person managing the list at
>>>>> luabind-user-owner@...
>>>>>
>>>>> When replying, please edit your Subject line so it is more specific
>>>>> than "Re: Contents of luabind-user digest..."
>>>>>
>>>>>
>>>>> Today's Topics:
>>>>>
>>>>> 1. Re: How to get the attributes of a lua class without their
>>>>> names, using luabind (Crashy)
>>>>>
>>>>>
>>>>> ----------------------------------------------------------------------
>>>>>
>>>>> Message: 1
>>>>> Date: Thu, 10 Dec 2015 05:07:38 -0700 (MST)
>>>>> From: Crashy <jean-baptiste.griffo@...>
>>>>> Subject: Re: [luabind] How to get the attributes of a lua class
>>>>> without their names, using luabind
>>>>> To: luabind-user@...
>>>>> Message-ID: <1449749258848-7670726.post@...>
>>>>> Content-Type: text/plain; charset=us-ascii
>>>>>
>>>>> 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.
>>>>>
>>>>>
>>>>>
>>>>> ------------------------------
>>>>>
>>>>> ------------------------------------------------------------------------------
>>>>>
>>>>>
>>>>> ------------------------------
>>>>>
>>>>> _______________________________________________
>>>>> luabind-user mailing list
>>>>> luabind-user@...
>>>>> https://lists.sourceforge.net/lists/listinfo/luabind-user
>>>>>
>>>>>
>>>>> End of luabind-user Digest, Vol 94, Issue 1
>>>>> *******************************************
>>>>>
>>>>>
>
> ------------------------------------------------------------------------------
> _______________________________________________
> luabind-user mailing list
> lua...@li...
> https://lists.sourceforge.net/lists/listinfo/luabind-user
|