Сучасна диджитал-освіта для дітей — безоплатне заняття в GoITeens ×
Mazda CX 30
×

Генерация С сорцов — кто чем пользуется?

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

Периодически у меня возникает задача нагенерить какие-то сорцы исходя из описания сущностей. Например, есть куча модулей с кучей параметров и надо нагенерить getters/setters для параметров + какие-то общие стандартные части (например — инициализация, деинициализация, какие-то общие функции). Это не С++, наследования нет, поэтому иногда приходится кое-что генерить, особенно, если заказчик требует код, написаный в стиле уже существующего проекта.

Для этих целей я исользую:
1) XML — для описание сущностей.
2) PHP — для самописного движока-генератора
3) С + PHP-вставки — для шаблонов.

Хотелось бы поинтересоваться, какими инструментами пользуются другие разработчики для решения подобного рода задач?

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Генерю C++ код (хидеры с классами/полями + реализацию отдельных методов в.cpp), для всяких прослоек к базам данных. Структуру базы вычитываю с сервера, сохраняю в хмл (для дальнейшего сравнения на изменения, при очередном вычитывании) и генерю классы для добавившихся/изменённых таблиц (убивая классы, для таблиц удалённых). Весь генератор на c++, вызывается в пре-билд стэпе.

Крутяк!
Слухай, а розкжи ше на чому ти пишеш апдейтор тої купи гівна яку ти нагенерив?

Тобто уявимо шо ти згенерив 100-ю файлів, деякі з них трохи поміняв, а потім постала потреба додати ше якийсь рядочок-два до кожного з 100-і файлів...

Чую пахне штучним інтелектом і нейронними мережами...

Немного спокойствия. Есть полностью генерённые файлы, а есть просто callbacks, которые надо заимплементить. Первые мы перегенериваем каждый раз после изменения данных, а вторые мы генерим и добавляем в проект 1 раз. И еще — эти штуки лежат в разных файлах. Так что не вижу тут никаких проблем. Не нужен никакой апдейтор.

Коментар порушує правила спільноти і видалений модераторами.

запускаешь повторно авторенерилку и у тебя новая куча говна с дополнительной строчечкой...

у нас используется питон... генерируются как простые хидеры с константами и описаниями классов и структур, так и функции сериализации...

а как выглядят при этом шаблоны?

код генерится из данных, то есть есть допустим описание структуры
class Some:
field1 = 1
field2 = 2

по ней генерится
struct Some
{int field1;
int field2;};

bool Read (Stream& stream, Some& some)
{Read (stream, field1);
Read (stream, field2);}

и блоб 0×01 0×00 0×00 0×00 0×02 0×00 0×00 0×00 который загружаем

Не поверишь -, но для всего вышеописанного тоже:)

Дело в том, что иногда в уже существующий проект надо добавить какие-то однотипные вещи. И ничего рефакторить нельзя — таковы требования заказчика — всё должно быть в одном стиле.

Честно говоря, я слабо представляю что такое генерацию когда на С. Если приведешь пару примеров, или пару ссылок на интернеты, то буду ацки благодарен))

Для генерации С-сорцов используются руки и голова.

Підписатись на коментарі