Подтвердить что ты не робот

Автоматически генерировать С++ файл из заголовка?

У меня есть куча файлов заголовков С++ с различными объявлениями классов и функций. До сих пор, когда я писал исходные файлы на С++ объявленных классов и функций, я вручную:

  • Копирование деклараций из файла заголовка в соответствующий исходный файл.
  • Удаление "class classname {" и соответствия "};"
  • Добавление "classname::" в имена всех функций класса.
  • Замена точек с запятой после объявлений функций с помощью "{}".
  • Удаление ключевых слов "виртуальный" и "статический".

Только после всей этой работы, которая на самом деле ничего не делает, могу ли я начать реализацию функций. Мне интересно, есть ли там где-нибудь инструмент, который может автоматически генерировать ".cpp" файл из файла ".h", где полученный ".cpp" содержит пустые заглушки для функций, объявленных в файле ".h" (и для которых встроенное определение не дано). Предпочтительным будет командный инструмент командной строки UNIX. Спасибо.

ОБНОВЛЕНИЕ: идеальный кросс-платформенный инструмент. Если нет, я работаю над Mac OS X 10.6.

4b9b3361

Ответ 1

Lazy С++, как представляется, предназначен для решения именно этой проблемы.

Ответ 2

В последнее время я оказался в вашей ситуации и укомплектовал свой собственный инструмент - impl_me. Это небольшой Ruby script, который использует SWIG в качестве бэкэнд-анализатора. Он записывает на stdout, поэтому вы можете комбинировать с вашим любимым набором инструментов nix find/grep/sed/awk для настройки для ваших собственных настроек.

Поскольку он написан на Ruby, он должен быть перекрестной платформой. SWIG также является кросс-платформой, поэтому все должно быть в порядке.

Он довольно примитивен на данном этапе и не настолько устойчив, как Lazy С++, в плане анализа странных шаблонов и материалов. Взносы приветствуются:)

Ответ 3

eclipse CDT имеет функцию "Использовать метод", которая делает именно это (по одному методу за раз). Существует также функция "Generate Getters and Setters", которая также генерирует соответствующий код в телах функций.

Ответ 4

Я пробовал Lazy С++, но, похоже, он устарел и больше не поддерживается. Он также не поддерживает новейший стандарт С++ 14.

Вот почему я решил написать свой собственный инструмент на Java, используя ANTLR4. Он называется Score, и вы можете найти его здесь: https://github.com/underrated/Score

На данный момент он находится в зачаточном состоянии и может быть заполнен ошибками, но я планирую его улучшить. Поэтому попробуйте, если хотите, и сообщите о любых ошибках на странице github проекта. Я попытаюсь исправить их как можно быстрее.