История изменений
Исправление Manhunt, (текущая версия) :
Макросы - харам и говно.
Шаблонятина - тормоза при компиляции.
Единственный остающийся вариант - кодогенерация во время сборки.
Если сборочная среда позволяет такую роскошь (условный libclang-for-pip), то парсить си-шные объявления структур и генерировать всякие вспомогательные функции. Дополнительную инфу для вспомогательных функций можно разместить в комментариях у мемберов структур.
Если в сборочную среду парсер с++ не втащить, то структуры изначально описывать на каком-то промежуточном языке (например, по мотивам swagger), и из него генерировать и си-шные объявления структур, и вспомогательные функции. Но тут будет ваша ide с ума сходить, т.к. изначально у нее не будет объявлений тех структур, с которыми вы в коде работаете.
PS тред не читал
Исправление Manhunt, :
Макросы - харам и говно.
Шаблонятина - тормоза при компиляции.
Единственный остающийся вариант - кодогенерация во время сборки.
Если сборочная среда позволяет такую роскошь (условный libclang-for-pip), то парсить си-шные объявления структур и генерировать всякие вспомогательные функции. Дополнительную инфу для вспомогательных функций можно разместить в комментариях у мемберов структур.
Если в сборочную среду парсер с++ не втащить, то структуры изначально описывать на каком-то промежуточном языке (например, по мотивам swagger), и из него генерировать и си-шные объявления структур, и вспомогательные функции. Но тут будет ваша ide с ума сходить, т.к. изначально у нее не будет объявлений тех структур, с которыми вы в коде работаете.
Исправление Manhunt, :
Макросы - это харам и говно.
Шаблонятина - тормоза при компиляции.
Единственный остающийся вариант - кодогенерация во время сборки.
Если сборочная среда позволяет такую роскошь (условный libclang-for-pip), то парсить си-шные объявления структур и генерировать всякие вспомогательные функции. Дополнительную инфу для вспомогательных функций можно разместить в комментариях у мемберов структур.
Если в сборочную среду парсер с++ не втащить, то структуры изначально описывать на каком-то промежуточном языке (например, по мотивам swagger), и из него генерировать и си-шные объявления структур, и вспомогательные функции. Но тут будет ваша ide с ума сходить, т.к. изначально у нее не будет объявлений тех структур, с которыми вы в коде работаете.
Исправление Manhunt, :
Макросы - это харам и говно.
Шаблонятина - тормоза при компиляции.
Единственный остающийся вариант - кодогенерация во время сборки.
Если сборочная среда позволяет такую роскошь (условный libclang-for-pip), то парсить си-шные объявления структур и генерировать всякие вспомогательные функции. Дополнительную инфу для вспомогательных функций можно разместить в комментариях у мемберов структур.
Если в сборочную среду парсер с++ не втащить, то структуры изначально описывать на каком-то промежуточном языке (например, по мотивам swagger), и из него генерировать и си-шные объявления структур, и вспомогательные функции. Но тут будет ваша ide с ума сходить, т.к. изначально у нее будет объявлений тех структур, с которыми вы в коде работаете.
Исправление Manhunt, :
Макросы - это харам и говно.
Шаблонятина - тормоза при компиляции.
Единственный остающийся вариант - кодогенерация во время сборки.
Если сборочная среда позволяет такую роскошь (условный libclang-for-pip), то парсить си-шные объявления структур и генерировать всякие вспомогательные функции.
Если в сборочную среду парсер с++ не втащить, то структуры изначально описывать на каком-то промежуточном языке (например, по мотивам swagger), и из него генерировать и си-шные объявления структур, и вспомогательные функции. Но тут будет ваша ide с ума сходить, т.к. изначально у нее будет объявлений тех структур, с которыми вы в коде работаете.
Исправление Manhunt, :
Макросы - это харам и говно.
Шаблонятина - тормоза при компиляции.
Единственный остающийся вариант - кодогенерация во время сборки.
Если сборочная среда позволяет такую роскошь (условный libclang-for-pip), то парсить си-шные объявления структур и генерировать всякие вспомогательные функции.
Если в сборочную среду парсер с++ не втащить, то структуры изначально описывать на каком-то промежуточном языке (например, по мотивам swagger), и из него генерировать и си-шные объявления структур, и вспомогательные функции.
Исходная версия Manhunt, :
Макросы - это харам и говно.
Шаблонятина - тормоза при компиляции.
Единственный остающийся вариант - кодогенерация во время сборки.
Если сборочная среда позволяет такую роскошь (условный libclang-for-pip), то парсить си-шные объявления структур и генерировать всякие вспомогательные функции.
Если в сборочную среду парсер с++ не втащить, то структуры изначально описывать на каком-то промежуточном языке (например, по мотивам swagger), и из него генерировать и си-шные объявления структур и вспомогательные функции.