Subject: Re: [boost] [intro] Preview: Introspection library
From: Matus Chochlik (chochlik_at_[hidden])
Date: 2010-06-28 14:30:31


On Mon, Jun 28, 2010 at 4:50 PM, Stefan Strasser <strasser_at_[hidden]> wrote:
> Zitat von Matus Chochlik <chochlik_at_[hidden]>:
>
>> On Mon, Jun 28, 2010 at 3:32 PM, Sohail Somani <sohail_at_[hidden]>
>> wrote:
>>>
>>> On 10-06-28 8:00 AM, Stefan Strasser wrote:
>>>>
>>>> template<class Mapping>
>>>> friend void introspect(Mapping mapping,type<A>){
>>>>   mapping
>>>>     (base_class<A_base>()                  )
>>>>     (member<A,int             ,&A::m_a>()  )
>>>>     (member<A,float           ,&A::m_b>()  )
>>>>     (member<A,std::vector<int>,&A::m_vec>())
>>>>   ();
>>>> }
>>>
>>> I think a library like this would be useful.
>>
>> Just FYI there is also another introspection/reflection library being
>> developed
>> for boost called Mirror. It can be downloaded from sourceforge here:
>> http://sourceforge.net/projects/mirror-lib/files/
>> or from the boost vault.
>
>
> I did look at Mirror as you know, however, AFAIU it does not fulfill my
> requirement of an easy-to-implement concept that can be used to implement
> no-overhead introspection algorithms.

I would be interested in some examples if you were kind enough to
provide them.

> In case I got that wrong or in case that changes, I'd be happy to switch to
> Mirror for gaining access to the class members, as the focus of my library
> is on the algorithms, with introspection as a means to this end.

After I tie up some loose ends on Mirror, I'm planning to
ask for opinions about the library on this list and start
a wider discussion. However currently I have to attend
to some other projects, but I'm expecting to have some free
time to work on Mirror in a couple of days again.

>
> The problem domain of "Intro" isn't really introspection/reflection, but
> algorithms using introspection.
>
>> For example Mirror
>> currently does not
>> cooperate well with Boost.Serialization, but this is one of the things
>> on my TODO list.
>
> Intro does not coorperate with Boost.Serialization but implements
> serialization on its own (although it is planned to fall back to the
> Serializable concept in case introspect() is not available.)

My mistake I've had only a quick glance at Intro, from which
I incorrectly assumed that it does.

>
> Boost.Serialization has several implementation related issues but also
> problems that are by design (e.g. "track_selectively") that do not allow for
> optimal performance. see my performance comparison.

Cooperation with Boost.Serialization's object tracking is one
of the things I need to incorporate into Mirror in order for it
to be usable with Serialization.

BR

Matus