Re: [luabind] How to get the attributes of a lua class, without their names, using luabind
Brought to you by:
arvidn,
daniel_wallin
From: Michael S. <ms...@tu...> - 2015-12-13 13:30:38
|
Yes, I was referring to the use of the class functionality without a c++ base class. Am 13.12.2015 um 12:53 schrieb jean-baptiste griffo: > Well they are pretty usefull if you want to inherit from a c++ class. > I'm making a game engine and these lua-class are awesome to add new > Types to the engine :) > On 12/12/2015 18:28, Michael Steinberg wrote: >> 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 >> ------------------------------------------------------------------------------ >> _______________________________________________ >> luabind-user mailing list >> lua...@li... >> https://lists.sourceforge.net/lists/listinfo/luabind-user > > ------------------------------------------------------------------------------ > _______________________________________________ > luabind-user mailing list > lua...@li... > https://lists.sourceforge.net/lists/listinfo/luabind-user |