Russian Qt Forum
Ноябрь 23, 2024, 13:58 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Динамическое формирование П.О. на основе C++Struct  (Прочитано 2864 раз)
aspirant
Гость
« : Январь 12, 2011, 11:26 »

Здравствуйте.

Есть такое Т.З.:
Нужно обрабатывать бинарный файл с пакетами данных, (каждый пакет данных состоит из набора разнотипных полей). Далее под каждый тип пакета данных требуется динамически создавать таблицу в БД PostgreSQL 8.3.7 и записывать в нее все данные из всех пакетов данного типа.

Вся гадость в том, что каждый бинарный фаил может состоять из своего набора типов пакетов, различающихся названиями, перечнем и типами полей. К каждому бинарному файлу есть описания всех пакетов, из которых состоит файл. Эти описания поставляются в виде C++ структур в С++ файле с расширением *.h.

Самое лучшее, что я смог придумать - это самому написать некий аналог транслятора, который бы смог разобрать C++ код в файле *.h, выбрать оттуда все описания структур Struct, разобрать из их описаний все входящие в состав структур поля и их типы, и далее на основе выбранной информации производить обработку бинарника и работу с БД. Только этот путь оказался очень непростым, поскольку постоянно приходится вводить в свой "транслятор" какие-то раннее не учтенные типы данных или например разбор директивы #define.

Может быть я пытаюсь изобрести велосипед?
И кто-то сможет подсказать какие-то встроенные средства Qt или еще что-то, что сможет упростить процедуру анализа структур в файле *.h?
Записан
brankovic
Гость
« Ответ #1 : Январь 12, 2011, 16:11 »

А нельзя ли эти заголовки вручную/скриптом перевести в читаемый программой формат заранее?

Чтобы не переписывать C++ препроцессор использовал g++ -E, ещё есть boost wave (библиотека-препроцессор C++). Но даже если отбросить препроцессор, полный разбор C++ задача титаническая.
Записан
Waryable
Гость
« Ответ #2 : Январь 13, 2011, 18:26 »

Цитировать
Но даже если отбросить препроцессор, полный разбор C++ задача титаническая.
Ну вроде бы как полноценный и не надо. Ловить только struct и дальше парсить блок структуры.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.043 секунд. Запросов: 20.