Re: How to bind a static member variable
Tony Kostanjsek <[email protected]> Mon, 8 Apr 2013 21:37:52 +0200
| Newsgroups | gmane.comp.lang.lua.bind.user |
|---|---|
| Message-ID | <[email protected]> |
yes. IIRC you can just bind your class "A", then treat _G.A as a table and just add stuff to it, like the static const value. On 08.04.2013, at 21:21, Lorenzo Pistone <[email protected]> wrote: > The real code does bind other things rather than only a static member. > So I guess I have to "reuse"the table that the class definition creates > (is it a table that it is being created?). So... do I just fetch that > with the method you proposed, and add my static member? > > On 04/08/2013 09:18 PM, Tony Kostanjsek wrote: >> if A::a is a static const, you don't really need a reference to that exact instance, but rather only the value in the correct namespace in Lua. I haven't touched luabind in a while, so treat the following more like pseudo code: >> >> lua_State* L = ... >> luabind::object _G = luabind::globals(L); >> _G["A"] = luabind::newTable(); >> _G["A"]["a"] = luabind::object(); >> _G["A"]["a"] = A::a; >> >> I must admit I forgot how to correctly implement that last assignment. Again, it's been a while. >> Basically, what you should try is to write the luabind C++ equivalent of the following lua code: >> >> _G.A = {} >> _G.A.a = <your value> >> >> hth, >> Tony >> >> >> On 08.04.2013, at 20:45, Ryan Pavlik <[email protected]> wrote: >> >>> On Mon, Apr 8, 2013 at 6:33 AM, Lorenzo Pistone <[email protected]> wrote: >>> #include <luabind/luabind.hpp> >>> struct A{ >>> static const A a; >>> }; >>> const A A::a; >>> int main(){ >>> luabind::scope sc = luabind::class_<A>("A") >>> .scope[luabind::def_readonly("a", &A::a)]; >>> } >>> >>> It seems as though while functions can be registered "globally" (in a namespace rather than a class member), no such provision was made for variables/data. I've added a test here: https://github.com/rpavlik/luabind/blob/static-members/test/test_static_member.cpp - the version committed succeeds but uncommenting the data members causes a compile failure just as you had noticed. (There is a luabind::def function that mimics the .def member of luabind::class_, but no such luabind::def_readonly...) I'm not sure if a workaround of setting the variable would work - I've had a tough time trying to figure out how to bind references to values/data to Lua with LuaBind. >>> >>> Ryan >>> >>> >>> -- >>> Ryan Pavlik >>> HCI Graduate Student >>> Virtual Reality Applications Center >>> Iowa State University >>> >>> [email protected] >>> http://academic.cleardefinition.com >>> ------------------------------------------------------------------------------ >>> Minimize network downtime and maximize team effectiveness. >>> Reduce network management and security costs.Learn how to hire >>> the most talented Cisco Certified professionals. Visit the >>> Employer Resources Portal >>> http://www.cisco.com/web/learning/employer_resources/index.html_______________________________________________ >>> luabind-user mailing list >>> [email protected] >>> https://lists.sourceforge.net/lists/listinfo/luabind-user >> >> ------------------------------------------------------------------------------ >> Minimize network downtime and maximize team effectiveness. >> Reduce network management and security costs.Learn how to hire >> the most talented Cisco Certified professionals. Visit the >> Employer Resources Portal >> http://www.cisco.com/web/learning/employer_resources/index.html >> _______________________________________________ >> luabind-user mailing list >> [email protected] >> https://lists.sourceforge.net/lists/listinfo/luabind-user > > > ------------------------------------------------------------------------------ > Minimize network downtime and maximize team effectiveness. > Reduce network management and security costs.Learn how to hire > the most talented Cisco Certified professionals. Visit the > Employer Resources Portal > http://www.cisco.com/web/learning/employer_resources/index.html > _______________________________________________ > luabind-user mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/luabind-user ------------------------------------------------------------------------------ Minimize network downtime and maximize team effectiveness. Reduce network management and security costs.Learn how to hire the most talented Cisco Certified professionals. Visit the Employer Resources Portal http://www.cisco.com/web/learning/employer_resources/index.html