Hi,

 

I’m trying to use the boost serialization in our project “Kratos” (a Multi-physics finite element code) in which I found the following problem, I have a class Variable which is derived from VariableData as follow:

 

Class VariableData

{

                std::size_t mKey;

public:

.....

};

 

template<class TDataType>

class Variable : public VariableData

{

....

}

 

Now I have a container which holds a pairs, consist of VariableData pointer to the Variable and a void* pointer to its value:

 

std::vector<std::pair<const VariableData*, void*> >

 

which I want to serialize but as it can be seen I don’t have the pointer to data in my variable and I might need to implement a costumized version of Serialized with void* pValue as an additional parameter for VariableData and Variable classes:

 

template<class TArchiveType>

Variable::serialize(TArchiveType &rArchive, const unsigned int Version, void* pValue)

{

                rArchive & static_cast<TDataType>(pVAlue);

}

 

 The problem here is the template definition of this method which make it impossible to be virtual. I note that the library uses get_extended_type_info for this porposed. But I don’t know how is its correct way of use. Can anybody give me a hint about how I can handle this problem?

 

Just to add some restriction:

-          I don’t want to add a hierarchy of handlers instead of pair because it adds another pointer jump to the container and reduce its performance in normal use of it

-          I don’t want to add a version of non template members for each archive type while it makes a lot of duplications and makes extra dependency to the archive types in a layer of code which is not expected to have this dependency

 

Thanks,

 

Pooyan.

 

_______________________________________________________________________________________________________________________________________________________________________________

Dr. Pooyan Dadvand

Member of Kratos team

International Center for Numerical Methods in Engineering - CIMNE
Campus Norte, Edificio C1
 

c/ Gran Capitán s/n

08034 Barcelona, España

Tel:        (+34) 93 401 56 96

Fax:       (+34) 93.401.65 17

web:       www.cimne.com

              www.cimne.com/kratos/

_______________________________________________________________________________________________________________________________________________________________________________

AVISO IMPORTANTE

Los datos de carácter personal contenidos en el mensaje, se registrarán en un fichero para facilitar la gestión de las comunicaciones de CIMNE. Se pueden ejercitar los derechos de acceso, rectificación, cancelación y oposición por escrito, dirigiéndose a nuestras oficinas de CIMNE, Gran Capitán s/n,  Edificio C1 - Campus Norte UPC, 08034 Barcelona, España.

 

AVÍS IMPORTANT

Les dades de caràcter personal contingudes en aquest missatge es registraran en un fitxer per facilitar la gestió de les comunicacions del CIMNE. Es poden exercir els drets d'accés, rectificació, cancel·lació i oposició, per escrit a les nostres oficines del CIMNE, Gran Capità s/n, Edifici C1, Campus Nord UPC, 08034 Barcelona, Espanya.

 

IMPORTANT NOTICE

All personal data contained in this mail will be processed confidentially and stored in a file property of CIMNE in order to manage corporate communications. You may exercise the right of access, rectification, deletion and objection by letter sent to CIMNE, Gran Capitán, Edificio C1 - Campus Norte UPC, 08034 Barcelona, Spain.