Context
Я пишу программу в rust, которая связывается с библиотекой c ++, однако rust не может генерировать привязки к виртуальным функциям .Хотя, вероятно, есть более подходящие подходы, наиболее простое решение - написать дополнительный уровень абстракции, к которому я могу генерировать привязки.
Проблема
Мне не хватает некоторых способностей c ++, поэтому мне было интересно,есть библиотека, которая может быстро генерировать оболочки для исходных функций.
Что у меня есть
- Множество файлов заголовков, каждый из которых содержит класс с функцией
create() -> ptr
, а такжепримерно ~ 40 виртуальных функций. - A
.so
, соответствующих заголовку.У меня нет доступа к исходному источнику.
Образец заголовка
class tPower
{
public:
tPower(){}
virtual ~tPower(){}
virtual tSystemInterface* getSystemInterface() = 0;
static tPower* create(tRioStatusCode *status);
virtual void writeDisable(tDisable value, tRioStatusCode *status) = 0;
virtual void writeDisable_User3V3(bool value, tRioStatusCode *status) = 0;
virtual void writeDisable_User5V(bool value, tRioStatusCode *status) = 0;
virtual void writeDisable_User6V(bool value, tRioStatusCode *status) = 0;
virtual tDisable readDisable(tRioStatusCode *status) = 0;
virtual bool readDisable_User3V3(tRioStatusCode *status) = 0;
virtual bool readDisable_User5V(tRioStatusCode *status) = 0;
virtual bool readDisable_User6V(tRioStatusCode *status) = 0;
// This goes on for another 30 or so functions plus the typedef for types referenced.
// There are no generics or any other language features used in these files.
Как мне создать эти оболочки или что ещеэффективный подход я мог бы использовать для решения этой проблемы?
Редактировать: Я не помечал этот вопрос с rust
, так как это уже возникало несколько раз ивывод был почти всегда написать обертку на C ++.Мой вопрос больше касается того, как я могу автоматизировать этот процесс, чтобы мне не пришлось тратить несколько часов на написание повторяющегося кода.