Description

This is a base class for serializing from archives.

#include <ChArchive.h>

Inheritance diagram for chrono::ChArchiveIn:
Collaboration diagram for chrono::ChArchiveIn:

Public Member Functions

void RebindExternalPointer (void *mptr, size_t ID)
 Use the following to declare object IDs that must not be de-serialized but rather be 'rebind' to already-existing external pointers, given unique IDs. More...
 
void RebindExternalPointer (std::shared_ptr< void > mptr, size_t ID)
 Use the following to declare object IDs that must not be de-serialized but rather be 'rebind' to already-existing external shared pointers, given unique IDs. More...
 
virtual void in (ChNameValue< bool > bVal)=0
 
virtual void in (ChNameValue< int > bVal)=0
 
virtual void in (ChNameValue< double > bVal)=0
 
virtual void in (ChNameValue< float > bVal)=0
 
virtual void in (ChNameValue< char > bVal)=0
 
virtual void in (ChNameValue< unsigned int > bVal)=0
 
virtual void in (ChNameValue< std::string > bVal)=0
 
virtual void in (ChNameValue< unsigned long > bVal)=0
 
virtual void in (ChNameValue< unsigned long long > bVal)=0
 
virtual void in (ChNameValue< ChEnumMapperBase > bVal)=0
 
virtual void in (ChNameValue< ChFunctorArchiveIn > bVal)=0
 
virtual void * in_ref (ChNameValue< ChFunctorArchiveIn > bVal)=0
 
virtual void in_array_pre (const char *name, size_t &msize)=0
 
virtual void in_array_between (const char *name)=0
 
virtual void in_array_end (const char *name)=0
 
template<class T >
void in (ChNameValue< ChEnumMapper< T > > bVal)
 
template<class T , size_t N>
void in (ChNameValue< T[N]> bVal)
 
template<class T >
void in (ChNameValue< std::vector< T > > bVal)
 
template<class T >
void in (ChNameValue< std::list< T > > bVal)
 
template<class T , class Tv >
void in (ChNameValue< std::pair< T, Tv > > bVal)
 
template<class T , class Tv >
void in (ChNameValue< std::unordered_map< T, Tv > > bVal)
 
template<class T >
void in (ChNameValue< std::shared_ptr< T > > bVal)
 
template<class T >
void in (ChNameValue< T * > bVal)
 
template<class T >
void in (ChNameValue< T > bVal)
 
template<class T >
ChArchiveInoperator>> (ChNameValue< T > bVal)
 Operator to allow easy serialization as myarchive << mydata;.
 
int VersionRead ()
 
template<class T >
int VersionRead ()
 
- Public Member Functions inherited from chrono::ChArchive
void SetUseVersions (bool muse)
 By default, version numbers are saved in archives Use this to turn off version info in archives (either save/load both with version info, or not, do not mix because it could give problems in binary archives.). More...
 
void SetClusterClassVersions (bool mcl)
 If true, the version number is not saved in each class: rather, it is saved only the first time that class is encountered. More...
 

Protected Member Functions

void PutPointer (void *object, bool &already_stored, size_t &obj_ID)
 Find a pointer in pointer map: eventually add it to map if it was not previously inserted. More...
 
virtual int in_version (const std::type_info &mtype)
 

Protected Attributes

std::unordered_map< void
*, size_t > 
internal_ptr_id
 
std::unordered_map< size_t,
void * > 
internal_id_ptr
 
size_t currentID
 
std::unordered_map< void
*, std::shared_ptr< void > > 
shared_ptr_map
 
std::unordered_map< size_t,
void * > 
external_id_ptr
 container of pointers marker with external IDs to re-bind instead of de-serializing
 
- Protected Attributes inherited from chrono::ChArchive
bool cluster_class_versions
 
std::unordered_map
< std::type_index, int > 
class_versions
 
bool use_versions
 

Member Function Documentation

void chrono::ChArchiveIn::PutPointer ( void *  object,
bool &  already_stored,
size_t &  obj_ID 
)
protected

Find a pointer in pointer map: eventually add it to map if it was not previously inserted.

Returns already_stored=false if was already inserted. Return 'obj_ID' offset in vector in any case. For null pointers, always return 'already_stored'=true, and 'obj_ID'=0.

void chrono::ChArchiveIn::RebindExternalPointer ( void *  mptr,
size_t  ID 
)

Use the following to declare object IDs that must not be de-serialized but rather be 'rebind' to already-existing external pointers, given unique IDs.

Note, the IDs can be whatever integer > 0. Use unique IDs per each pointer. Note, the same IDs must be used when serializing pointers in ArchiveOUT. Note, there is no check on pointer types when rebinding!

void chrono::ChArchiveIn::RebindExternalPointer ( std::shared_ptr< void >  mptr,
size_t  ID 
)

Use the following to declare object IDs that must not be de-serialized but rather be 'rebind' to already-existing external shared pointers, given unique IDs.

Note, the IDs can be whatever integer > 0. Use unique IDs per each pointer. Note, the same IDs must be used when serializing pointers in ArchiveOUT. Note, there is no check on pointer types when rebinding!