В начале, мне это показалось довольно монструозным решением. Как из пушки по воробьям. Своя реализация заняла примерно неделю, а с clang неделю бы только разбирался. Хотя сейчас, видя все проблемы с утилитой кодогенерации, использование clang не кажется плохой идеей.
Хм, я подумал это что-то вроде properties из C#… Но даже так, для меня это выглядит довольно резко — заворачивать все члены класса в макрос. Такое у меня требование — минимум вмешательства в синтаксис.
Расскажите более конкретно чего не хватает, просто интересно.
Мне нужны свои собственные атрибуты, которые могут нести какую-нибудь информацию. Мне нужен доступ к членам класса: запись и чтение. Мне нужно находить член класса в иерархии объектов по его пути. Для функций мне нужно их название, возвращаемый тип, список аргументов. Мне нужна информация о наследовании.
Почему? Там лицензия LGPL.
Дело даже не в лицензии, а в том, что я не хочу делать так сказать "франкинштейна". Если есть возможность реализовать модуль самому в короткие сроки — я выберу этот путь.
Да, Qt-шный moc похож на мое решение. С Qt работал уже давно и беглый обзор их решения мне не понравился по нескольким причинам: нет доступа к членам класса, нет атрибутов, нельзя добавить своего функционала. Для меня просто не хватило тех функций что дает Qt. Еще, мой проект подразумевается коммерческим, а тянуть за собой Qt или его часть — совсем не вариант.
Хм, я подумал это что-то вроде properties из C#… Но даже так, для меня это выглядит довольно резко — заворачивать все члены класса в макрос. Такое у меня требование — минимум вмешательства в синтаксис.
Мне нужны свои собственные атрибуты, которые могут нести какую-нибудь информацию. Мне нужен доступ к членам класса: запись и чтение. Мне нужно находить член класса в иерархии объектов по его пути. Для функций мне нужно их название, возвращаемый тип, список аргументов. Мне нужна информация о наследовании.
Дело даже не в лицензии, а в том, что я не хочу делать так сказать "франкинштейна". Если есть возможность реализовать модуль самому в короткие сроки — я выберу этот путь.