"Joel de Guzman" <[EMAIL PROTECTED]> writes:

> Alexander Nasonov <[EMAIL PROTECTED]> wrote:
>
>>> From user point of view it's easy. Every class is described using intuitive
>> class-decl-like style:
>> 
>> void describe_Driver(descriptor<Driver>& class_)
>> {
>>     class_("Driver").derived_from<Person>()
>>     [
>>         member(&Driver::licence_id, "licence_id"), // note comma operator
>>         member(&Driver::licence_issue_date, "licence_issue_date")
>>     ];
>> }
>
> Cool syntax! Hmmm.... Reminds me of Boost.Python, luabind and ahem... Phoenix ;-)

A problem with this is that the introspection information is only
available at runtime.  A more-flexible system would use GCC-XML output
to generate something like:

     template <>
     struct class_<Driver>
     {
         typedef mpl::vector<Person> bases;

         typedef mpl::vector<
              member<int Driver::*, &Driver::licence_id>
            , member<Date Driver::*, &Driver::licence_issue_date>
            , member<void (Driver::*)(), &Driver::accelerate>
         > members;

         ...
     };

So all the introspection information could be available at
compile-time.

-- 
Dave Abrahams
Boost Consulting
www.boost-consulting.com

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to