Мы используем tolua++ для создания привязок Lua для классов C++.
Предположим, у меня есть класс С++:
class Foo
{
//Some methods in Foo, irrelevant to question.
};
и файл tolua .pkg со следующим содержимым
class Foo
{
};
Рассмотрим следующую функцию:
void call_some_lua_function(lua_State* luaState)
{
Foo* myFoo = new Foo();
tolua_pushusertype(luaState, (void*)myFoo, "Foo");
//More code to actually call Lua, irrelevant to question.
}
Теперь собственно вопрос:
tolua_pushusertype вызывает segfault в Lua, если 3-й параметр не соответствует допустимой полной строке класса C++, которая была зарегистрирована при вызове tolua_cclass. Итак, если параметр 3, где «Bar», мы получаем segfault.
Я хотел бы сделать следующее:
void call_some_lua_function(lua_State* luaState)
{
//determine if tolua is aware of my type, how to do this?
//Something like:
//if(!tolua_iscpptype_registered("Foo"))
//{
// abort gracefully
//}
Foo* myFoo = new Foo();
tolua_pushusertype(luaState, (void*)myFoo, "Foo");
//More code to actually call Lua, irrelevant to question.
}
Есть ли способ сделать это с помощью толуа?