Robert Ramey wrote:
I believe I have found the an acceptable resolution to the "registration" cunundrum.

The whole problem was generated by by the fact that type_info is not portable
and in my view never can be and wouldn't help anyway.

Hence a function that did class->unique class identifer could not exist.

I realize now that we don't really require that such a function exist.

How about this.

I conjure up something like (pseudo code):

register_cross_program_class_identifier<class T>(const char *id="T")

This would be invoked for each class declaration. Now we have
a portable id associated with each class - exactly what we need.
Polymorphic pointers would archive this tag and use it
to determine the proper class to construct on loading.
That would be precisely right. Indeed, I believe this is the scheme I've
previously described in terms of type_info -> GUID and GUID -> factory
maps.


The default class identifier would be the text representation of the class name.
(note: in general not necessarily the same as type_info.name() )
which is going to be sufficent for almost all cases.
Yes, exactly! I actually believe that type_info is the best form --
I don't know any other way to automatically get the class name.

If one has concerns about the universality of his class identifier
(e.g. a class named window or some such) or if one wants to
do something more ambitious (e.g. plug-in system) he will
be free to use any other const string to identify his class
by overriding the default.
Right, e.g. string representation of COM GUID.

explicit invocation of basic_[i|o]archive::register_type would no longer be necessary.
I believe this would resolve the whole issue to everyone's satisfaction.
Yes, I'm starting to thinking that we'll have a quite good serialization
soon.

- Volodya

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

Reply via email to