Когда я работал с Lua в C #, я добавлял атрибуты к методам, которые я хотел зарегистрировать в Lua, что-то вроде этого:
// place tile marker
[LuaExport("settilemarker")]
public void SetTileMarker(int x, int y)
{
TileEditor.X = x;
TileEditor.Y = y;
}
Затем я использовал бы отражение во время выполнения, чтобы найти все эти функции и автоматически зарегистрировать их с помощью небольшого фрагмента кода, который не нужно было обновлять для каждой новой функции.
Это также может быть использовано для автоматического создания списка всех зарегистрированных команд и т. Д.
У меня вопрос, есть ли способ сделать это с Lua в C ++? Как какой-то макрос или что-то в этом роде.
Информация не должна быть доступной во время выполнения, я просто хочу, чтобы удобство маркировки каждой функции было там, где она определена, и чтобы все они регистрировались автоматически, вместо того, чтобы иметь один длинный раздел где-то в lua_register (..) s.
Я уже нашел некоторые инструменты, которые, по-видимому, способны генерировать код для этого, но я надеялся, что может быть способ, не требующий дополнительной ручной работы, кроме нажатия на Build.
Если нет, то мне все-таки придется исследовать эти инструменты дальше.
Кстати, с использованием Visual Studio 2010.