Re: Luabind and passing classes
Nathaniel Lewis <[email protected]>
| Newsgroups | gmane.comp.lang.lua.bind.user |
|---|---|
| Message-ID | <1279766541.12034.1.camel@XtremePC> |
Thanks I spent a bit and got what I wanted working sort of. How do you
you return strings from a exposed function? I got the exposing working
fine and I can pass a string as a parameter but how do I get it as a
result. the class (part of testing) is
class TestClass {
std::string myString;
public:
TestClass() {
myString = "Not Initalized";
}
TestClass( const char* aString ) {
myString = std::string(aString);
}
void setString( const char* aString ) {
myString = std::string(aString);
}
const char* getString( void ) {
return myString.c_str();
}
void printString( void ) {
std::cout << myString << std::endl;
}
static void configureLuaObject(lua_State* lVM) {
luabind::module(lVM) [
luabind::class_<TestClass>("TestClass")
.def(luabind::constructor <> ())
.def(luabind::constructor<const char*>())
.def("setString", &TestClass::setString)
.def("getString", &TestClass::getString)
.def("printString", &TestClass::printString)
];
}
void callFunction(lua_State* lVM) {
luabind::call_function<void>(lVM, "AFunction",
boost::ref(this));
}
};
getString throws an error when run.
Nathaniel
On Thu, 2010-07-22 at 13:40 +1200, Nigel Atkinson wrote:
> Hi Nathaniel,
>
> Short answer: Yes.
>
> If you bind a class using Luabind it can be passed to Lua functions as
> a parameter. When you bind a class you do not need to bind the
> class's constructor. Omitting the constructor prevents your Lua
> script from being able to instantiate that particular class, however
> Lua can otherwise use instances passed to it from C++.
>
> I do this quite often with singleton classes.
>
> Nigel Atkinson
>
> On Wed, 2010-07-21 at 16:53 -0700, Nathaniel Lewis wrote:
> > I was reading through some tutorials and I had a question unanswered.
> > How do I pass a specific class to Lua? I have a class that represents a
> > world in my game engine and I need some way to talk with it from Lua. I
> > think LuaBind is the answer but I don't know. I would never want to
> > create the class from Lua. Instead I would want to pass a reference to
> > the one created on the c++ side to Lua and then call functions inside of
> > it. Is this possible with LuaBind? Basically a simple script would
> > look like this
> >
> > -- called when map is loaded by engine --
> > function Init (worldInstance)
> > -- do stuff --
> > end
> >
> > -- called after every frame is rendered --
> > Update = coroutine.wrap( function (worldInstance, timeSinceLastFrame)
> > while true do
> > -- do stuff + call coroutine.yield() when waiting for things --
> > end
> > end)
> > Nathaniel
> >
> >
> > ------------------------------------------------------------------------------
> > This SF.net email is sponsored by Sprint
> > What will you do first with EVO, the first 4G phone?
> > Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
> > _______________________________________________
> > luabind-user mailing list
> > [email protected]
> > https://lists.sourceforge.net/lists/listinfo/luabind-user
>
> ------------------------------------------------------------------------------
> This SF.net email is sponsored by Sprint
> What will you do first with EVO, the first 4G phone?
> Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
> _______________________________________________ luabind-user mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/luabind-user
------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first