1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
// Copyright Daniel Wallin 2009. Use, modification and distribution is
// subject to the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#include "test.hpp"
#include <luabind/luabind.hpp>
int count = 0;
struct X
{
X()
{
++count;
}
~X()
{
--count;
}
};
struct Y
{
virtual ~Y()
{}
};
struct Y_wrap : Y, luabind::wrap_base
{};
void test_main(lua_State* L)
{
using namespace luabind;
module(L) [
class_<X>("X")
.def(constructor<>()),
class_<Y, Y_wrap>("Y")
.def(constructor<>())
];
DOSTRING(L,
"class 'Y_lua' (Y)\n"
" function Y_lua.__init(self)\n"
" Y.__init(self)\n"
" end\n"
);
for (int i = 0; i < 100; ++i)
{
lua_State* thread = lua_newthread(L);
int ref = luaL_ref(L, LUA_REGISTRYINDEX);
DOSTRING(thread,
"local x = X()\n"
);
DOSTRING(thread,
"local y = Y_lua()\n"
);
luaL_unref(L, LUA_REGISTRYINDEX, ref);
}
}
|