MPQC
3.0.0-alpha
|
#include <util/state/stateout.h>
Public Member Functions | |
virtual void | put_header () |
Write out header information. | |
virtual int | putstring (const char *) |
This is like put except the length of the char array is determined by interpreting the character array as a character string. | |
StateOut::put(datum) | |
Write the given datum. | |
virtual int | put (const std::string &) |
virtual int | put (char r) |
virtual int | put (unsigned int r) |
virtual int | put (int r) |
virtual int | put (unsigned long r) |
virtual int | put (long r) |
virtual int | put (bool r) |
virtual int | put (float r) |
virtual int | put (double r) |
StateOut::put(array) | |
Write the given array data. Size information is also saved. The data is allocated and read by the get(T*&) routines. | |
virtual int | put (const char *, int) |
virtual int | put (const unsigned int *, int) |
virtual int | put (const int *, int) |
virtual int | put (const unsigned long *, int) |
virtual int | put (const long *, int) |
virtual int | put (const float *, int) |
virtual int | put (const double *, int) |
StateOut::put_array() | |
Put arrays of data. No size information is stored. This data is read by the get_array_T routines. | |
virtual int | put_array_char (const char *p, int size) |
virtual int | put_array_uint (const unsigned int *p, int size) |
virtual int | put_array_int (const int *p, int size) |
virtual int | put_array_ulong (const unsigned long *p, int size) |
virtual int | put_array_long (const long *p, int size) |
virtual int | put_array_float (const float *p, int size) |
virtual int | put_array_double (const double *p, int size) |
StateOut::put(std::container) | |
Write standard C++ library containers. All methods work with value (and/or key) type either a Ref to a SavableState or one of built-in types. | |
template<template< typename, typename > class Container, class T , class A > | |
int | put (const Container< T, A > &v) |
Write a Container that could be a standard (non-associative) C++ container such as std::vector or std::list. | |
template<class T , class A > | |
int | put (const std::vector< T, A > &v) |
"Specialization" of the above put() to std::vector. | |
template<typename Key , typename Compare , typename Alloc > | |
int | put (const std::set< Key, Compare, Alloc > &s) |
Write an std::set. This also works if Key or Value is a Ref to a SavableState. | |
template<typename Key , typename Value > | |
int | put (const std::map< Key, Value > &map) |
Write an std::map. This also works if Key or Value is a Ref to a SavableState. | |
template<typename L , typename R > | |
int | put (const std::pair< L, R > &v) |
Write an std::pair. | |
void | forget_references () |
Don't keep track of pointers to objects. More... | |
void | copy_references () |
If a reference to an object that has already been written is encountered, copy it instead of generating a reference to the first object. More... | |
virtual int | use_directory () |
Returns true if this object uses a directory. | |
virtual void | flush () |
Flush out any remaining data. | |
int | node_to_node () const |
True if this is a node to node save/restore. More... | |
virtual int | tell () |
Returns the current position in the file. More... | |
virtual void | seek (int loc) |
Set the current position in the file. More... | |
virtual int | seekable () |
Return non-zero if tell and seek do anything sensible. More... | |
Public Member Functions inherited from sc::DescribedClass | |
DescribedClass (const DescribedClass &) | |
DescribedClass & | operator= (const DescribedClass &) |
ClassDesc * | class_desc () const MPQC__NOEXCEPT |
This returns the unique pointer to the ClassDesc corresponding to the given type_info object. More... | |
const char * | class_name () const |
Return the name of the object's exact type. | |
int | class_version () const |
Return the version of the class. | |
virtual void | print (std::ostream &=ExEnv::out0()) const |
Print the object. | |
Ref< DescribedClass > | ref () |
Return this object wrapped up in a Ref smart pointer. More... | |
Public Member Functions inherited from sc::RefCount | |
size_t | identifier () const |
Return the unique identifier for this object that can be compared for different objects of different types. More... | |
int | lock_ptr () const |
Lock this object. | |
int | unlock_ptr () const |
Unlock this object. | |
void | use_locks (bool inVal) |
start and stop using locks on this object | |
refcount_t | nreference () const |
Return the reference count. | |
refcount_t | reference () |
Increment the reference count and return the new count. | |
refcount_t | dereference () |
Decrement the reference count and return the new count. | |
int | managed () const |
void | unmanage () |
Turn off the reference counting mechanism for this object. More... | |
Protected Member Functions | |
virtual int | put_array_void (const void *, int) |
virtual int | putparents (const ClassDesc *) |
void | put_directory () |
void | have_classdesc () |
int | need_classdesc () |
virtual int | putobject (const Ref< SavableState > &) |
This will prepare StateOut to output a pointer to data. More... | |
virtual int | put (const ClassDesc *) |
Write out information about the given ClassDesc. | |
Protected Member Functions inherited from sc::RefCount | |
RefCount (const RefCount &) | |
RefCount & | operator= (const RefCount &) |
Protected Attributes | |
int | dir_loc_loc_ |
TranslateDataOut * | translate_ |
int | copy_references_ |
int | next_object_number_ |
std::map< Ref< SavableState >, StateOutData > | ps_ |
std::map< ClassDescP, int > | classidmap_ |
int | nextclassid_ |
int | node_to_node_ |
Friends | |
class | SavableState |
class | TranslateDataOut |
Serializes fundamental and user-defined types. A special ability, and the primary reason for the existence of StateOut and StateIn, is being able to serialize/deserialize graphs of Ref pointers to SavableState objects so that two references to the same piece of data do not result in that data being sent to the output device two times.
void sc::StateOut::copy_references | ( | ) |
If a reference to an object that has already been written is encountered, copy it instead of generating a reference to the first object.
The directory will not be updated with new objects.
void sc::StateOut::forget_references | ( | ) |
Don't keep track of pointers to objects.
Calling this causes duplicated references to objects to be copied. The directory will not contain the forgotten objects.
|
inline |
True if this is a node to node save/restore.
This is necessary for classes that try to avoid saving databases to files that can otherwise be read in, but want to avoid reading the database from disk on all nodes.
|
protectedvirtual |
This will prepare StateOut to output a pointer to data.
It first checks to see if the data has already been saved. If it has, then a reference to this data is saved. Otherwise the object is written out.
Reimplemented in sc::StateOutText.
|
virtual |
Set the current position in the file.
The default implementation does nothing.
Reimplemented in sc::StateOutBin.
|
virtual |
Return non-zero if tell and seek do anything sensible.
The default implementation returns 0.
Reimplemented in sc::StateOutBin.
|
virtual |
Returns the current position in the file.
The default implementation returns 0.
Reimplemented in sc::StateOutBin.