Простые модели и кодогенераторы на clojure

топ 100 блогов metaclass06.08.2012 https://github.com/csete/gqrx/blob/master/pulseaudio/pa_device_list.h (код не мой, просто я в нем сейчас разбираюсь)
По ссылке есть класс pa_device, единственное назначение которого - хранить три поля описания pulseaudio девайсов. Занимает это дело 23+8 - 31 строку.

Когда у меня возникает надобность на обычных языках делать такие классы, у меня не хватает терпения их писать вручную и я их генерирую или из t4-шаблонов или из описания на Clojure, например, этот класс я бы описал так, сделав макрос def-gen-class:
(def-gen-class pa_device 
  "комментарий к классу"
  index uint "комментарий к полю"
  name string "..."
  description string "...")

в итоге получится переменная pa_device, внутри которой лежит описание класса в удобном для кодогенерации виде. Можно map, можно список кортежей, без разницы, благо кложурь имеет развитый механизм разборки структур данных на составляющие.

Полученное описание можно при желании расширить генерацией, например, пользовательского интерфейса или сериализации-десериализации.
Для своей опердени я таким образом генерю классы документов, которые умеют загружать-сохранять себя в JSON. Из 90 строк кода на кложури создается 1226 строк на дельфи.

Оставить комментарий

Предыдущие записи блогера :
02.08.2012 Qt
Архив записей в блогах:
Умиротворяющая ночная тишина обманчива. Под покровом ночи можно легко и непринуждённо вершить свои тайные дела. И за глянцевым стеклянным фасадом терминала аэропорта Домодедово мелькают странные тени, разыгрывая леденящий душу сценарий ...
Дорогие товарищи, у меня вышла новая книжка /тут салют и крики "ура!" и "да здравствует!" /  Называется --  "Котов обижать не рекомендуется" На первой же странице ее написано: Автор выражает глубокую благодарность котам Макару и Степану за ...
.. дамам - по букету! А мужчинам... посмотреть, чем можно дам порадовать... или покритиковать меня за качество съемки.. ;) Внимательные к моему блогу читатели поняли, наверное, что с этими розами не всё так просто. Это не просто вышивка, это часть серии "Акварельные цветы", а "Розы" ...
Так, друзья, тут в комментариях к моему недавнему популярному посту о том, как выглядит типичный любитель СССР , написали, что я несколько широко подошёл к проблеме — любители СССР все разные. Я полностью согласен с этим тезисом, и в сегодняшнем посте я расскажу вам, какие ...
— Обожаю Китай! — сказала наша соседка по дороге в университет. — Прямо жила бы здесь и жила. Кстати, на выходных меня не будет, так что сможете от меня отдохнуть. — Ну что ты, мы совсем от тебя не устаём! — неубедительно соврал я. — А куда ты едешь? ...