|
template<class T > |
void | process (T &&head) |
| Serializes data after calling prologue, then calls epilogue. More...
|
|
template<class T , class ... Other> |
void | process (T &&head, Other &&... tail) |
| Unwinds to process all data. More...
|
|
template<class T > |
ArchiveType & | processImpl (virtual_base_class< T > const &b) |
| Serialization of a virtual_base_class wrapper. More...
|
|
template<class T > |
ArchiveType & | processImpl (base_class< T > const &b) |
| Serialization of a base_class wrapper. More...
|
|
template<class T > |
ArchiveType & | processImpl (DeferredData< T > const &d) |
|
template<class T , PROCESS_IF(member_serialize) > |
ArchiveType & | processImpl (T const &t) |
| Member serialization. More...
|
|
template<class T , PROCESS_IF(non_member_serialize) > |
ArchiveType & | processImpl (T const &t) |
| Non member serialization. More...
|
|
template<class T , PROCESS_IF(member_save) > |
ArchiveType & | processImpl (T const &t) |
| Member split (save) More...
|
|
template<class T , PROCESS_IF(non_member_save) > |
ArchiveType & | processImpl (T const &t) |
| Non member split (save) More...
|
|
template<class T , PROCESS_IF(member_save_minimal) > |
ArchiveType & | processImpl (T const &t) |
| Member split (save_minimal) More...
|
|
template<class T , PROCESS_IF(non_member_save_minimal) > |
ArchiveType & | processImpl (T const &t) |
| Non member split (save_minimal) More...
|
|
template<class T , traits::EnableIf<(Flags &AllowEmptyClassElision), !traits::is_output_serializable< T, ArchiveType >::value, std::is_empty< T >::value > = traits::sfinae> |
ArchiveType & | processImpl (T const &) |
| Empty class specialization. More...
|
|
template<class T , traits::EnableIf< traits::has_invalid_output_versioning< T, ArchiveType >::value||(!traits::is_output_serializable< T, ArchiveType >::value &&(!(Flags &AllowEmptyClassElision)||((Flags &AllowEmptyClassElision) &&!std::is_empty< T >::value)))> = traits::sfinae> |
ArchiveType & | processImpl (T const &) |
| No matching serialization. More...
|
|
template<class T > |
std::uint32_t | registerClassVersion () |
| Registers a class version with the archive and serializes it if necessary. More...
|
|
template<class T , PROCESS_IF(member_versioned_serialize) > |
ArchiveType & | processImpl (T const &t) |
| Member serialization. More...
|
|
template<class T , PROCESS_IF(non_member_versioned_serialize) > |
ArchiveType & | processImpl (T const &t) |
| Non member serialization. More...
|
|
template<class T , PROCESS_IF(member_versioned_save) > |
ArchiveType & | processImpl (T const &t) |
| Member split (save) More...
|
|
template<class T , PROCESS_IF(non_member_versioned_save) > |
ArchiveType & | processImpl (T const &t) |
| Non member split (save) More...
|
|
template<class T , PROCESS_IF(member_versioned_save_minimal) > |
ArchiveType & | processImpl (T const &t) |
| Member split (save_minimal) More...
|
|
template<class T , PROCESS_IF(non_member_versioned_save_minimal) > |
ArchiveType & | processImpl (T const &t) |
| Non member split (save_minimal) More...
|
|
template<class ArchiveType, std::uint32_t Flags = 0>
class cereal::OutputArchive< ArchiveType, Flags >
The base output archive class.
This is the base output archive for all output archives. If you create a custom archive class, it should derive from this, passing itself as a template parameter for the ArchiveType.
The base class provides all of the functionality necessary to properly forward data to the correct serialization functions.
Individual archives should use a combination of prologue and epilogue functions together with specializations of serialize, save, and load to alter the functionality of their serialization.
- Template Parameters
-
ArchiveType | The archive type that derives from OutputArchive |
Flags | Flags to control advanced functionality. See the Flags enum for more information. |
template<class ArchiveType , std::uint32_t Flags = 0>
Indicates this archive is not intended for loading.
This ensures compatibility with boost archive types. If you are transitioning from boost, you can check this value within a member or external serialize function (i.e., Archive::is_loading::value) to disable behavior specific to loading, until you can transition to split save/load or save_minimal/load_minimal functions
template<class ArchiveType , std::uint32_t Flags = 0>
Indicates this archive is intended for saving.
This ensures compatibility with boost archive types. If you are transitioning from boost, you can check this value within a member or external serialize function (i.e., Archive::is_saving::value) to enable behavior specific to loading, until you can transition to split save/load or save_minimal/load_minimal functions
template<class ArchiveType , std::uint32_t Flags = 0>
template<class T , traits::EnableIf<(Flags &AllowEmptyClassElision), !traits::is_output_serializable< T, ArchiveType >::value, std::is_empty< T >::value > = traits::sfinae>
Empty class specialization.
template<class ArchiveType , std::uint32_t Flags = 0>
template<class T , traits::EnableIf< traits::has_invalid_output_versioning< T, ArchiveType >::value||(!traits::is_output_serializable< T, ArchiveType >::value &&(!(Flags &AllowEmptyClassElision)||((Flags &AllowEmptyClassElision) &&!std::is_empty< T >::value)))> = traits::sfinae>
No matching serialization.
Invalid if we have invalid output versioning or we are not output serializable, and either don't allow empty class ellision or allow it but are not serializing an empty class