Скрипт для разбора файла прото и генерации простых C-структур - PullRequest
3 голосов
/ 25 сентября 2019

Я пытаюсь проанализировать доступные прото-файлы в каталоге и создать соответствующие простые старые структуры Си.Все текущие библиотеки создают классы C ++, которые не поддерживаются в моем репо (очень устаревшее репо :)). Есть ли какая-либо библиотека, которая может использоваться для этой цели.

Например, address.proto

Этот файл протока должен быть проанализирован и должен иметь возможность создавать структуру, подобную следующей.Пример извлечения.

struct PhoneNumber_s {
    char number[15]
    PhoneType type;
} PhoneNumber_t;

enum PhoneType {
   MOBILE = 0;
    HOME = 1;
    WORK = 2;
}

Создание кода может быть простым в зависимости от типа.Но синтаксический анализатор (python или любой другой язык) является необходимой частью информации.

Заранее спасибо.

1 Ответ

0 голосов
/ 25 сентября 2019

Краткий ответ: вы не можете сделать это таким образом, который имеет смысл.Лучше всего, кроме ручного создания соответствующих структур C, - написать короткую программу, которая использует выходные данные компилятора protobuf и использует отражение для получения имен и типов полей, а затем генерирует из них исходный код C.Тогда, конечно, вам придется выяснить, как выполнить сериализацию / десериализацию из C, но это еще одно шоу.

...