Наверное, единственно возможный способ реализации этого примерно такой. Есть объекты, их поля и методы. Все это живет не в виде текста, а в виде базы данных и изоморфно отображается на граф. Который при необходимости может быть представлен в графическом виде и распечатан. Для удобства.
Есть некая обобщенная программа. Которая пишется не в режиме набора текста, а в режиме работы с интерактивным меню. Эта программа состоит из гарантируемо портируемого подмножества «сущностей» С и работы с полями и методами, упомянутыми выше.
Затем пишется реализация этих методов и полей применительно к конкретике.
Затем идет «полуручной» синтез кода: каждая операция виртуального кода раскрывается генератором в реальный С код, и программер («оператор синтеза») смотрит – а что там получилось, оно вообще смысл имеет или нет?
Если чего не так – то правится не синтезированный код (!), а правится виртуальный код и (или) практическая реализация полей и методов. Затем синтез запускается заново – до получения полного удовлетворения.
Далее синтезированный исходник обрабатывается по стандартной методике, дебажится,…
Так и общность сохранится, и допиливание будет удобным.