Допустим, мне нужно написать кроссплатформенную программу. Но кроме кроссплатформенности, она должна уметь «стыковаться» с любой из N библиотек (и под Linux, и под Windows). Ко всем этим N библиотекам можно написать что-то вроде wrapper'а (со своим API), чтобы сам код основного модуля не зависел от backend'а. Но изобретать велосипед в виде нового API - довольно накладно.
И я задумался - в каких случаях имеет смысл вместо wrapper'а писать генератор кода (подставляющий вызовы библиотек на этапе компиляции приложения)? Что лёгкое посоветуете почитать по генерации кода? (мне хотелось бы задавать алгоритм основного модуля каким-нибудь псевдокодом). Например:
Если координата x юнита меньше единицы, то сделать x равным единице.
Если координата y юнита меньше единицы, то сделать y равным единице.
Если координата x юнита больше 64, то сделать x равным 64.
Если координата y юнита больше 64, то сделать y равным 64.
Перемещено mono из talks