Сообщите SWIG о типе данных, на который указывает указатель void
. Если SWIG знает о типе, то он передаст его Lua как userdata
с подходящей метатабельной привязкой, которая позволяет стороне Lua получать доступ и изменять отдельные поля данных (и, если это класс, вызывать call, его методы) *. 1003 *
Это может означать информирование SWIG о некоторых типах данных, которые в противном случае не требуются библиотеке, но, вероятно, в долгосрочной перспективе стоят усилий.
Все, что Lua знает о типе пользовательских данных, содержится в его метатаблице. Два значения userdata
имеют одинаковый тип, если они имеют одинаковую метатабельность. Этот metatable отвечает за передачу всего доступа к своему контенту со стороны Lua и обычно состоит из методов, реализованных в C, так что это возможно сделать. Без такой метатабельности сторона Lua может рассматривать userdata
только как непрозрачный шарик.