protobuf для fpc

Вопросы использования сторонних (не входящих в состав FPC и Lazarus) утилит и библиотек.

Модератор: Модераторы

Re: protobuf для fpc

Сообщение Дож » 22.05.2014 13:14:17

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


Основные сущности примерно такие:
  • Сообщение (message) — главная сущность, по своей сути структура с геттерами/сеттерами, методами для выставления дефолтных значений, сериализации и десериализации, проверками на наличие полей в сообщении, операторами присваивания и т.д. В не-lite режиме сообщения могут предоставлять метаданные (reflection) о себе.
  • Пространства имён (namespace) — понятно, что такое. Пространства имён могут быть вложенные (как и объявление сообщений). Fpc штатно не содержит поддержку пространств имён, но т.к. в protobuf'е они есть, нужно придумать способ их сэмулировать, иначе есть опасность столкнуться с конфликтом имён. Я планирую использовать для этих целей классы (или объекты): классы могут быть вложенными, Global.Local.Message будет смотреться весьма аккуратно и логично, а конструкция вида with Namespace.Subnamespace do прекрасно заменит локальный using namespace из Си.
  • Объявление enum-типа — будет сделано через enum'ы паскаля (или просто через константы), проблем тут быть не должно.
  • Массивы (repeated поля сообщений) — поля, хранящие несколько значений, с random access по индексу и возможностью добавления новых значений. Их логично реализовать через динамический массив, хотя вариант через список не кажется плохим, т.к. random access'ы не всегда нужны, а умение быстро добавить новый элемент в конец и проитерировать все значения — всегда. Дизайн интерфейса нужно ещё обдумывать (думаю, что нужно писать дженерик TProtobufArray<TProtobufMessage>, в нём определять нужные методы и реализовывать енумератор. Ожидаю встретить многочисленные подводные камни.).
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 899
Зарегистрирован: 12.10.2008 16:14:47

Re: protobuf для fpc

Сообщение iskander » 31.05.2014 19:10:58

Дож писал(а):Никто не знает есть ли protobuf для fpc?

Загляните к Дэвиду Батлеру.
http://fundementals.sourceforge.net/index.html
iskander
энтузиаст
 
Сообщения: 606
Зарегистрирован: 08.01.2012 18:43:34

Re: protobuf для fpc

Сообщение Vapaamies » 31.05.2014 23:22:39

Мельком заглянул. Похоже, что это тоже самопальщина, а не полноценный плагин. Исходник plugin.proto из поставки Google он не взял.
Аватара пользователя
Vapaamies
постоялец
 
Сообщения: 292
Зарегистрирован: 24.07.2012 22:37:59
Откуда: Санкт-Петербург

Re: protobuf для fpc

Сообщение Dmytro Bogovych » 09.09.2014 11:34:07

Есть какой-то прогресс с плагином для protoc? Возможно смогу помочь.

Тестирую fundamentals.protobuf - есть
1) проблема в совместимости c protobuf-net
2) проблема в кодогенераторе - не дописывает длину масива байт при ее сериализации
Dmytro Bogovych
незнакомец
 
Сообщения: 2
Зарегистрирован: 09.09.2014 11:31:29

Re: protobuf для fpc

Сообщение Дож » 09.09.2014 11:41:13

Есть какой-то прогресс с плагином для protoc? Возможно смогу помочь.

Тестирую fundamentals.protobuf - есть
1) проблема в совместимости c protobuf-net
2) проблема в кодогенераторе - не дописывает длину масива байт при ее сериализации

Привет, у меня уже работает мой минималистичный ptorobuf-модуль (dminiproto), с которого буду развёртывать основной. Где-то в сентябре опубликую прототип на обсуждение.
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 899
Зарегистрирован: 12.10.2008 16:14:47

Re: protobuf для fpc

Сообщение Dmytro Bogovych » 12.09.2014 19:43:56

Для информации и Гугла: пофиксил в паре мест fundamentals.protobuf. Автор обещал рассмотреть патчи, отправил, жду ответа. Если патчи будут приняты - выложу если новой версии не будет...
Dmytro Bogovych
незнакомец
 
Сообщения: 2
Зарегистрирован: 09.09.2014 11:31:29

Пред.

Вернуться в Сторонние средства

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

Рейтинг@Mail.ru