Генерация оболочек для виртуальных функций - PullRequest
0 голосов
/ 28 февраля 2019

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 ++.Мой вопрос больше касается того, как я могу автоматизировать этот процесс, чтобы мне не пришлось тратить несколько часов на написание повторяющегося кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...