Re: Binding static methods with luabind?
Nicolas Goles <[email protected]>
| Newsgroups | gmane.comp.lang.lua.bind.user |
|---|---|
| Message-ID | <[email protected]> |
Hello!,
Thanks for the wonderful explanation.
My binding ended up like :
//Register with luabind.
luabind::module(L)
[
luabind::class_<LuaRegisterManager>("LuaRegisterManager")
*.def("execScript",
(void(LuaRegisterManager::*)())&LuaRegisterManager::execScript)*
.scope
[
luabind::def("getInstance", &LuaRegisterManager::getInstance)
//returns static singleton instance
]
];
It works great as you said, when performing the following Lua call:
LuaRegisterManager.getInstance()
However, what if I would like to call "execScript" (which I registered
as a .def in my initial binding ? )
I thought it would be something like ( from Lua ) :
LuaRegisterManager.getInstance().execScript("script.lua")
But that returns the following error:
Error: No matching overload found, candidates:
void execScript(LuaRegisterManager&)
Thank you very much for all your help.
--
Nicolas Goles Domic
Founder & Lead Programmer
Gando Games <www.gandogames.com>
Iliya Trendafilov wrote:
> Try LuaRegisterManager*.*getInstance()
> Note there is a dot `*.*` between LuaRegisterManager and
> getInstance(), you seem to be using colon `*:*` instead.
>
> In Lua the colon is just a syntactic sugar to mimic passing of /this
> /pointer in OO languages, the code
> `LuaRegisterManager*:*getInstance()` is equivalent to
> `LuaRegisterManager*.*getInstance(LuaRegisterManager)` which is not
> what you want.
>
>
> On Wed, Sep 15, 2010 at 7:51 PM, Nicolas Goles <[email protected]
> <mailto:[email protected]>> wrote:
>
> Great,
>
> The .scope[] solved the problem ( now I have a different problem );
>
> When I execute the Lua script I mentioned ( 1 line script )
>
> LuaRegisterManager:getInstance()
>
>
>
> I get the following Error in my Console:
>
> Error: LuaRegisterManager* getInstance()
>
>
>
> Before adding the .scope [] I was getting
>
> Error: no static 'getInstance' in class 'LuaRegisterManager'
>
> So I guess it's finding the static method now , but there seems to
> be a different error this time.
>
> I am new to Lua/Luabind so help is really welcome.
>
> Thanks!
>
>
> --
> Nicolas Goles Domic
> Founder & Lead Programmer
> Gando Games <http://www.gandogames.com>
>
>
>
> Iliya Trendafilov wrote:
>> Hi,
>>
>> That should do it, note the scope around the definition of
>> getInstance
>>
>> luabind::module(L)
>> [
>> luabind::class_<LuaRegisterManager>("LuaRegisterManager") //Register the class
>> .def("execScript", (void(LuaRegisterManager::*)())&LuaRegisterManager::execScript) //method to execute a lua script
>> .scope
>> [
>> def("getInstance",&LuaRegisterManager::getInstance) //returns static singleton instance
>> ]
>>
>> ];
>>
>>
>> Invoke with LuaRegisterManager.getInstance() (i.e. dot instead of
>> colon). A bit of explanation can be found here:
>> http://www.rasterbar.com/products/luabind/docs.html#nested-scopes-and-static-functions
>>
>> Hope that helps
>>
>> On Wed, Sep 15, 2010 at 7:32 PM, Nicolas Goles
>> <[email protected] <mailto:[email protected]>> wrote:
>>
>> Hello,
>>
>> I have a Singleton Class in my application, it has a member
>> method defined like:
>>
>> static LuaRegisterManager* getInstance();
>>
>> I'm trying to register this class with Luabind, and expose
>> some methods to Lua:
>>
>> //Register with luabind.
>>
>> luabind::module(L)
>>
>> [
>>
>> luabind::class_<LuaRegisterManager>("LuaRegisterManager") //Register the class
>>
>> .def("execScript", (void(LuaRegisterManager::*)())&LuaRegisterManager::execScript) //method to execute a lua script
>>
>> .def("getInstance",&LuaRegisterManager::getInstance) //returns static singleton instance
>>
>> ];
>>
>> The problem is that if I execute the following Lua script:
>>
>>
>> LuaRegisterManager:getInstance()
>>
>> I get :
>>
>> Error: no static 'getInstance' in class 'LuaRegisterManager'
>>
>>
>>
>> So I guess I'm making an error and my static getInstance()
>> method is not being registered with luabind correctly.
>>
>> Help is welcome :)
>>
>> --
>> Nicolas Goles Domic
>> Founder & Lead Programmer
>> Gando Games <http://www.gandogames.com>
>>
>>
>> ------------------------------------------------------------------------------
>> Start uncovering the many advantages of virtual appliances
>> and start using them to simplify application deployment and
>> accelerate your shift to cloud computing.
>> http://p.sf.net/sfu/novell-sfdev2dev
>> _______________________________________________
>> luabind-user mailing list
>> [email protected]
>> <mailto:[email protected]>
>> https://lists.sourceforge.net/lists/listinfo/luabind-user
>>
>>
>> ------------------------------------------------------------------------
>> ------------------------------------------------------------------------------
>> Start uncovering the many advantages of virtual appliances and
>> start using them to simplify application deployment and
>> accelerate your shift to cloud computing.
>> http://p.sf.net/sfu/novell-sfdev2dev
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> luabind-user mailing list
>> [email protected] <mailto:[email protected]>
>> https://lists.sourceforge.net/lists/listinfo/luabind-user
>>
>
------------------------------------------------------------------------------
Start uncovering the many advantages of virtual appliances
and start using them to simplify application deployment and
accelerate your shift to cloud computing.
http://p.sf.net/sfu/novell-sfdev2dev
_______________________________________________
luabind-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/luabind-user