Luabind return value handling with userdata

Anssi Penttilä <[email protected]>
Newsgroups gmane.comp.lang.lua.bind.user
Message-ID <[email protected]>
Hello all,

I'm new at this list though have used luabind in our game project for a
while.
Now I have a question which I didn't find an answer from luabind manual or
by browsing the archives of this list.

Is there a way to pass class references or pointers from c++ to lua using
luabind in such way that it does't need to allocate userdata from lua?
Example:

// c++

class A
{
public:
int x, y, z;
};

class B
{
public:
const A getA() const
{
 return A;
}
};

module(L)
[
    class_<A>("A"),
    class_<B>("B")
     .def("getA", &B::getA)
];

// lua script:

local b = B()
local a = B:getA()

Now when returning from getA luabind seems to allways allocate userdata from
lua.
(in 64 bit environment 64 bytes (sizeof(object_rep)) to be exact)

Well that is not much and garbage collection handles it nicely.

But if I have a loop in lua:

local b = B()

for i=1,1000 do
 local a = b:getA() -- each getA allocs memory from lua memory pool

end

and this loop runs 60 times per second then I'm obviously in trouble when
lua garbage collector kicks in.

So is there any way in luabind to avoid this? Or use at least less memory?

BR,
Anssi Penttilä

------------------------------------------------------------------------------
Create and publish websites with WebMatrix
Use the most popular FREE web apps or write code yourself; 
WebMatrix provides all the features you need to develop and 
publish your website. http://p.sf.net/sfu/ms-webmatrix-sf

_______________________________________________
luabind-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/luabind-user
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.