Loading...
Searching...
No Matches
BALL::PersistenceManager Class Referenceabstract
Foundation Classes » Concepts » Object Persistence.

`#include <BALL/CONCEPT/persistenceManager.h>`

Inheritance diagram for BALL::PersistenceManager:

## Public Types

Type Definitions
typedef void *(* | CreateMethod) ()

## Public Member Functions

Constructors and Destructors
| PersistenceManager ()
| PersistenceManager (const PersistenceManager &pm)
| PersistenceManager (::std::istream &is)
| PersistenceManager (::std::ostream &os)
| PersistenceManager (::std::istream &is, ::std::ostream &os)
virtual | ~PersistenceManager ()
Layer 2 commands
virtual void | registerClass (String signature, const CreateMethod m)
virtual void * | createObject (String signature) const
virtual Size | getNumberOfClasses () const
virtual void | setOstream (::std::ostream &s)
virtual void | setIstream (::std::istream &s)
void | startOutput ()
void | endOutput ()
PersistentObject * | readObject ()
PersistenceManager & | operator<< (const PersistentObject &object)
PersistenceManager & | operator>> (PersistentObject *&object_ptr)
Layer 1 methods
template<typename T>
bool | checkObjectHeader (const T &, const char *name=0)
bool | checkObjectHeader (const char *type_name)
template<typename T>
void | writeObjectHeader (const T *object, const char *name=0)
void | writeObjectTrailer (const char *name=0)
bool | checkObjectTrailer (const char *name=0)
template<typename T>
void | writePrimitive (const T &t, const char *name)
template<typename T>
bool | readPrimitive (T &t, const char *name)
template<typename T>
void | writeStorableObject (const T &t, const char *name)
template<typename T>
bool | readStorableObject (T &t, const char *name)
template<typename T>
void | writeObjectPointer (const T *object, const char *name)
template<typename T>
bool | readObjectPointer (T *&object, const char *name)
template<typename T>
bool | readObjectSmartPointer (boost::shared_ptr< T > &s_ptr, const char *name)
template<typename T>
void | writeObjectReference (const T &object, const char *name)
template<typename T>
bool | readObjectReference (T &object, const char *name)
template<typename T>
void | writeObjectArray (const T *array, const char *name, Size size)
template<typename T>
bool | readObjectArray (const T *array, const char *name, Size &size)
template<typename T>
void | writeObjectPointerArray (T **arr, const char *name, const Size size)
template<typename T>
bool | readObjectPointerArray (T **array, const char *name, Size &size)
Layer 0 methods
virtual void | writeHeader (const char *type_name, const char *name, LongSize ptr)=0
virtual bool | checkHeader (const char *type_name, const char *name, LongSize &ptr)=0
virtual void | writeTrailer (const char *name=0)=0
virtual bool | checkTrailer (const char *name=0)=0
virtual void | writeStreamHeader ()=0
virtual void | writeStreamTrailer ()=0
virtual bool | checkStreamHeader ()=0
virtual bool | checkStreamTrailer ()=0
virtual bool | getObjectHeader (String &type_name, LongSize &ptr)=0
virtual void | writeName (const char *name)=0
virtual bool | checkName (const char *name)=0
virtual void | writeStorableHeader (const char *type_name, const char *name)=0
virtual bool | checkStorableHeader (const char *type_name, const char *name)=0
virtual void | writeStorableTrailer ()=0
virtual bool | checkStorableTrailer ()=0
virtual void | writePrimitiveHeader (const char *type_name, const char *name)=0
virtual bool | checkPrimitiveHeader (const char *type_name, const char *name)=0
virtual void | writePrimitiveTrailer ()=0
virtual bool | checkPrimitiveTrailer ()=0
virtual void | writeObjectPointerHeader (const char *type_name, const char *name)=0
virtual bool | checkObjectPointerHeader (const char *type_name, const char *name)=0
virtual void | writeObjectReferenceHeader (const char *type_name, const char *name)=0
virtual bool | checkObjectReferenceHeader (const char *type_name, const char *name)=0
virtual void | writeObjectPointerArrayHeader (const char *type_name, const char *name, Size size)=0
virtual bool | checkObjectPointerArrayHeader (const char *type_name, const char *name, Size &size)=0
virtual void | writeObjectPointerArrayTrailer ()=0
virtual bool | checkObjectPointerArrayTrailer ()=0
virtual void | initializeOutputStream ()
virtual void | finalizeOutputStream ()
virtual void | initializeInputStream ()
virtual void | finalizeInputStream ()
Put methods for primitive data types.

Persistence in BALL supports the following predefined data types: \begin{tabular}{lcc} Name & signed/unsigned & Size (in bit)

  \hline char & signed & 8

  bool & - & 1

  Byte & unsigned & 8

  Index & signed & 32

  Size/Position & unsigned & 32

  LongSize & unsigned & 64

  float & signed & 32

  double & signed & 64

  long double & signed & 128

  String & - & - \end{tabular}

virtual void | put (const char c)=0
virtual void | put (const Byte c)=0
virtual void | put (const Index i)=0
virtual void | put (const Size p)=0
virtual void | put (const bool b)=0
virtual void | put (const Real f)=0
virtual void | put (const DoubleReal d)=0
virtual void | put (const string &s)=0
virtual void | put (const LongSize p)=0

## Get methods for primitive data types.

typedef HashSet< const PersistentObject * > | ObjectSet
typedef std::list< const PersistentObject * > | ObjectList
typedef HashMap< LongSize, void * > | PointerMap
typedef std::list< std::pair< void **, LongSize > > | PointerList
typedef std::list< std::pair< boost::shared_ptr< PersistentObject > *, LongSize > > | SmartPointerList
StringHashMap< CreateMethod > | create_methods_
ObjectSet | object_out_
ObjectList | object_out_needed_
PointerMap | pointer_map_
PointerList | pointer_list_
SmartPointerList | smart_pointer_list_
ObjectList | object_in_
::std::ostream * | ostr_
::std::istream * | istr_
virtual void | get (char &c)=0
virtual void | get (Byte &b)=0
virtual void | get (Index &s)=0
virtual void | get (Size &s)=0
virtual void | get (bool &b)=0
virtual void | get (Real &f)=0
virtual void | get (DoubleReal &d)=0
virtual void | get (string &s)=0
virtual void | get (LongSize &p)=0
void | registerKernelClasses_ ()
void | addPointerPair_ (LongSize old_ptr, void *new_ptr)
void | addNeededObjects_ ()
bool | updatePointers_ ()

## Detailed Description

Persistence manager class. This class serializes and deserializes persistent objects and provides support for the implementation of the object-specific serialization methods persistentRead and persistentWrite . It defines three different layers:

- Layer 0 contains the basic I/O routines for primitive data types. All methods of layer 0 are virtual to exchange the implementation of the format-independent storage and retrieval of this data (e.g. XDR or text format)
- Layer 1 implements the methods needed to store objects or more complex data structures using Layer 0. To implement object persistence for a user defined object, methods from layer 0 and layer 1 are needed
- Layer 2 implements the persistence manager's user interface. These are the methods needed to register classes, set the associated streams, and to store or retrieve objects. When writing a pointer to a persistent object, the serialization of the referenced object is automatically initiated after the objects holding the pointer has been written. Hence, pointers between persistent objects remain valid after deserializing the objects again.
    Note: This class is mainly an interface definition and contains abstract methods. Do not try to instantiate a PersistenceManager, your compiler will be complaining.
  See also
    PersistentObject
    XDRPersistenceManager
    TextPersistenceManager

Definition at line 72 of file persistenceManager.h.

## Member Typedef Documentation

## CreateMethod

typedef void *(* BALL::PersistenceManager::CreateMethod) ()

Create method type. This type describes a method to dynamically create a specific object. It should return a void pointer for interface compatibility and doesn't take an argument. It creates a new object and returns the object's this pointer (cast to void*). The getNew function (in the RTTI namespace) is an example for such a method.

See also
  registerClass
  RTTI
  CREATE

Definition at line 91 of file persistenceManager.h.

## ObjectList

typedef std::list<const PersistentObject*> BALL::PersistenceManager::ObjectList

protected

Definition at line 746 of file persistenceManager.h.

## ObjectSet

typedef HashSet<const PersistentObject*> BALL::PersistenceManager::ObjectSet

protected

Definition at line 742 of file persistenceManager.h.

## PointerList

typedef std::list<std::pair<void**, LongSize> > BALL::PersistenceManager::PointerList

protected

Definition at line 754 of file persistenceManager.h.

## PointerMap

typedef HashMap<LongSize, void*> BALL::PersistenceManager::PointerMap

protected

Definition at line 750 of file persistenceManager.h.

## SmartPointerList

typedef std::list<std::pair<boost::shared_ptr<PersistentObject>*, LongSize> > BALL::PersistenceManager::SmartPointerList

protected

Definition at line 758 of file persistenceManager.h.

## Constructor & Destructor Documentation

## PersistenceManager() [1/5]

BALL::PersistenceManager::PersistenceManager | ( |  | ) |

Default constructor

## PersistenceManager() [2/5]

BALL::PersistenceManager::PersistenceManager | ( | const PersistenceManager & | pm | ) |

Copy constructor

## PersistenceManager() [3/5]

BALL::PersistenceManager::PersistenceManager | ( | ::std::istream & | is | ) |

Detailed constructor with an input stream. Creates a persistence manager object and assigns an input stream.

## PersistenceManager() [4/5]

BALL::PersistenceManager::PersistenceManager | ( | ::std::ostream & | os | ) |

Detailed constructor with an output stream. Creates a persistence manager object and assigns an output stream.

## PersistenceManager() [5/5]

BALL::PersistenceManager::PersistenceManager | ( | ::std::istream & | is,
|  | ::std::ostream & | os )

Detailed constructor with an input stream and an output stream. Creates a persistence manager object and assigns an input stream and an output stream.

## ~PersistenceManager()

virtual BALL::PersistenceManager::~PersistenceManager | ( |  | ) |

virtual

Destructor. Destruct the persistence manager and and clear up all data structures. The associated streams or sockets ( setIStream / setOStream ) are not closed.

## Member Function Documentation

## addNeededObjects_()

void BALL::PersistenceManager::addNeededObjects_ | ( |  | ) |

protected

## addPointerPair_()

void BALL::PersistenceManager::addPointerPair_ | ( | LongSize | old_ptr,
|  | void * | new_ptr )

protected

## checkHeader()

virtual bool BALL::PersistenceManager::checkHeader | ( | const char * | type_name,
|  | const char * | name,
|  | LongSize & | ptr )

pure virtual

Check an object header.

Parameters

  type_name | the stream name of the class to be read
  name | the expected name of the object
  ptr | a reference to a PointerSizeUInt to store the this pointer of the object read from the stream

Returns
  bool true, if the header was correct, false otherwise
  ptr the pointer is set to the value read from the file

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## checkName()

virtual bool BALL::PersistenceManager::checkName | ( | const char * | name | ) |

pure virtual

Check for variable/member name.

Parameters

  name | the name we want to check

Returns
  true if the name matches

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## checkObjectHeader() [1/2]

bool BALL::PersistenceManager::checkObjectHeader | ( | const char * | type_name | ) |

Check an object header by supplying its stream name.

Parameters

  type_name | the stream name of the object type

Returns
  true if the object header could be checked successfully

## checkObjectHeader() [2/2]

template<typename T>

bool BALL::PersistenceManager::checkObjectHeader | ( | const T & | ,
|  | const char * | name = 0 )

Check an object header by determining its stream name by using

See also
  RTTI and calling
  checkHeader.

Parameters

  object | an Object of type T
  name | the expected name of the object

Returns
  true if the object header could be checked successfully

Definition at line 800 of file persistenceManager.h.

## checkObjectPointerArrayHeader()

virtual bool BALL::PersistenceManager::checkObjectPointerArrayHeader | ( | const char * | type_name,
|  | const char * | name,
|  | Size & | size )

pure virtual

Check for header for an array of pointers to PersistentObjects.

Parameters

  type_name | the stream name of the object type
  name | the name of the object array (?)
  size | the size of the array

Returns
  true if the header was correct

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## checkObjectPointerArrayTrailer()

virtual bool BALL::PersistenceManager::checkObjectPointerArrayTrailer | ( |  | ) |

pure virtual

Check for trailer for an array of pointers to PersistentObjects.

Returns
  true if the trailer was correct

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## checkObjectPointerHeader()

virtual bool BALL::PersistenceManager::checkObjectPointerHeader | ( | const char * | type_name,
|  | const char * | name )

pure virtual

Check for header for a pointer to a PersistentObject.

Parameters

  type_name | the stream name of the object type
  name | the name of the object

Returns
  true if the header was correct

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## checkObjectReferenceHeader()

virtual bool BALL::PersistenceManager::checkObjectReferenceHeader | ( | const char * | type_name,
|  | const char * | name )

pure virtual

Check for header for a reference to a PersistentObject.

Parameters

  type_name | the stream name of the object type
  name | the name of the object

Returns
  true if the header was correct

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## checkObjectTrailer()

bool BALL::PersistenceManager::checkObjectTrailer | ( | const char * | name = 0 | ) |

Check an object trailer by calling

See also
  checkTrailer.

Parameters

  name | the name of the object

## checkPrimitiveHeader()

virtual bool BALL::PersistenceManager::checkPrimitiveHeader | ( | const char * | type_name,
|  | const char * | name )

pure virtual

Check for a type header and name for a primitive type.

Parameters

  type_name | the stream name of the primitive
  name | the name of the primitive

Returns
  true if type and name of the primitive match

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## checkPrimitiveTrailer()

virtual bool BALL::PersistenceManager::checkPrimitiveTrailer | ( |  | ) |

pure virtual

Check for the trailer of a primitive type.

Returns
  true if the trailer was correct

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## checkStorableHeader()

virtual bool BALL::PersistenceManager::checkStorableHeader | ( | const char * | type_name,
|  | const char * | name )

pure virtual

Check for storable object header.

Parameters

  type_name | the stream name of the storable object
  name | the name of the object

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## checkStorableTrailer()

virtual bool BALL::PersistenceManager::checkStorableTrailer | ( |  | ) |

pure virtual

Check for the trailer of a storable object.

Returns
  true if the trailer was correct

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## checkStreamHeader()

virtual bool BALL::PersistenceManager::checkStreamHeader | ( |  | ) |

pure virtual

Check for the start marker in the input stream.

Returns
  true if the marker could be checked.

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## checkStreamTrailer()

virtual bool BALL::PersistenceManager::checkStreamTrailer | ( |  | ) |

pure virtual

Check for the end marker in the output stream.

Returns
  true if the marker could be checked.

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## checkTrailer()

virtual bool BALL::PersistenceManager::checkTrailer | ( | const char * | name = 0 | ) |

pure virtual

Check an object trailer. This method checks the trailer of an object.

Parameters

  name | the name of the object

Returns
  true if the trailer was correct

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## createObject()

virtual void * BALL::PersistenceManager::createObject | ( | String | signature | ) | const

virtual

Create an object of a registered class. If the persistence manager has registered a create method for the given class signature, the corresponding create method is called and its result is returned. If the class is not registered, 0 is returned.

Parameters

  signature | the class signature of the object to be created

Returns
  void* a pointer to the new object or 0, if the signature is not known

See also
  registerClass

## endOutput()

void BALL::PersistenceManager::endOutput | ( |  | ) |

Terminate the output to a persistent stream. This method finishes the writing of a persistent object to a stream. In fact, it does most of the work. It checks for the list of "missing" objects, i.e. objects that have been referenced via a pointer or a reference by the objects written before and calls their persistent write methods. It then writes an end marker to the file (via writeStreamTrailer) and clears the pending output list.

  It need not be called usually, as it is called by operator >>.

## finalizeInputStream()

virtual void BALL::PersistenceManager::finalizeInputStream | ( |  | ) |

virtual

Prepare the input stream for closing.

Reimplemented in BALL::XDRPersistenceManager.

## finalizeOutputStream()

virtual void BALL::PersistenceManager::finalizeOutputStream | ( |  | ) |

virtual

Prepare the output stream for closing.

Reimplemented in BALL::XDRPersistenceManager.

## get() [1/9]

virtual void BALL::PersistenceManager::get | ( | bool & | b | ) |

pure virtual

Read a boolean value from the input stream.

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## get() [2/9]

virtual void BALL::PersistenceManager::get | ( | Byte & | b | ) |

pure virtual

Read a single Byte from the input stream.

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## get() [3/9]

virtual void BALL::PersistenceManager::get | ( | char & | c | ) |

pure virtual

Read a signed char from the input stream.

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## get() [4/9]

virtual void BALL::PersistenceManager::get | ( | DoubleReal & | d | ) |

pure virtual

Read a double precision floating point number from the input stream.

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## get() [5/9]

virtual void BALL::PersistenceManager::get | ( | Index & | s | ) |

pure virtual

Read an Index from the input stream.

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## get() [6/9]

virtual void BALL::PersistenceManager::get | ( | LongSize & | p | ) |

pure virtual

Read a 64-bit pointer from the input stream.

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## get() [7/9]

virtual void BALL::PersistenceManager::get | ( | Real & | f | ) |

pure virtual

Read a single precision floating point number from the input stream.

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## get() [8/9]

virtual void BALL::PersistenceManager::get | ( | Size & | s | ) |

pure virtual

Read a Size or a Position from the input stream.

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## get() [9/9]

virtual void BALL::PersistenceManager::get | ( | string & | s | ) |

pure virtual

Read a string from the output stream.

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## getNumberOfClasses()

virtual Size BALL::PersistenceManager::getNumberOfClasses | ( |  | ) | const

virtual

Return the number of registerd classes.

Returns
  Size the nubmer of classes contained in the persistence manager's internal StringHashMap

## getObjectHeader()

virtual bool BALL::PersistenceManager::getObjectHeader | ( | String & | type_name,
|  | LongSize & | ptr )

pure virtual

Get an (unknown) object header. The name (if set) is ignored. The type name is returned in type_name and the address of the object is read but not inserted into the table.

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## initializeInputStream()

virtual void BALL::PersistenceManager::initializeInputStream | ( |  | ) |

virtual

Prepare the input stream for reading.

Reimplemented in BALL::XDRPersistenceManager.

## initializeOutputStream()

virtual void BALL::PersistenceManager::initializeOutputStream | ( |  | ) |

virtual

Prepare the output stream for output.

Reimplemented in BALL::XDRPersistenceManager.

## operator<<()

PersistenceManager & BALL::PersistenceManager::operator<< | ( | const PersistentObject & | object | ) |

Write a persistent object to the stream. This method writes a persistent object to a stream.

## operator>>()

PersistenceManager & BALL::PersistenceManager::operator>> | ( | PersistentObject *& | object_ptr | ) |

Read a persistent object from a stream. This method calls readObject .

## put() [1/9]

virtual void BALL::PersistenceManager::put | ( | const bool | b | ) |

pure virtual

Write a boolean value to the output stream.

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## put() [2/9]

virtual void BALL::PersistenceManager::put | ( | const Byte | c | ) |

pure virtual

Write a single byte to the output stream.

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## put() [3/9]

virtual void BALL::PersistenceManager::put | ( | const char | c | ) |

pure virtual

Write a signed char to the output stream.

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## put() [4/9]

virtual void BALL::PersistenceManager::put | ( | const DoubleReal | d | ) |

pure virtual

Write a double precision floating point number to the output stream.

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## put() [5/9]

virtual void BALL::PersistenceManager::put | ( | const Index | i | ) |

pure virtual

Write an Index to the output stream.

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## put() [6/9]

virtual void BALL::PersistenceManager::put | ( | const LongSize | p | ) |

pure virtual

Write a pointer to the output.

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## put() [7/9]

virtual void BALL::PersistenceManager::put | ( | const Real | f | ) |

pure virtual

Write a single precision floating point number to the output stream.

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## put() [8/9]

virtual void BALL::PersistenceManager::put | ( | const Size | p | ) |

pure virtual

Write a Position or a Size to the output stream.

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## put() [9/9]

virtual void BALL::PersistenceManager::put | ( | const string & | s | ) |

pure virtual

Write a string to the output.

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## readObject()

PersistentObject * BALL::PersistenceManager::readObject | ( |  | ) |

Read a persistent object from the stream. This method tries to read a persistent object from the stream, creates the object and all dependend objects, finally demangles all pointers and references.

  If no object could be read or the format was not correct, a null pointer is returned.

Returns
  0 if no object could be read, the object's this pointer otherwise

Exceptions

  Exception::GeneralException |

## readObjectArray()

template<typename T>

bool BALL::PersistenceManager::readObjectArray | ( | const T * | array,
|  | const char * | name,
|  | Size & | size )

Read an array of persistent objects. This method reads size persistent objects from the persistent stream. It also checks header and trailer of the array.

Parameters

  array | the array of persistent objects
  name | the name (usually the name of the member variable)
  size | the number of elements in the array

Definition at line 966 of file persistenceManager.h.

## readObjectPointer()

template<typename T>

bool BALL::PersistenceManager::readObjectPointer | ( | T *& | object,
|  | const char * | name )

Read a pointer to a PersistentObject. This method also checks header and trailer.

Parameters

  object | a mutable pointer reference we want to read.
  name | the name of the object pointer (usually the name of the member variable)

Returns
  true if reading was successful

Definition at line 871 of file persistenceManager.h.

## readObjectPointerArray()

template<typename T>

bool BALL::PersistenceManager::readObjectPointerArray | ( | T ** | array,
|  | const char * | name,
|  | Size & | size )

Read an array of persistent object pointers. This method reads size persistent object pointers from the persistent stream. It also checks header and trailer of the array.

Parameters

  array | the array of persistent object pointers
  name | the name (usually the name of the member variable)
  size | the number of elements in the array

Definition at line 1006 of file persistenceManager.h.

## readObjectReference()

template<typename T>

bool BALL::PersistenceManager::readObjectReference | ( | T & | object,
|  | const char * | name )

Read a reference to a PersistentObject. This method also checks header and trailer of the object reference.

Parameters

  object | a mutable reference
  name | the name of the object (usually the name of the member variable)

Returns
  true if reading was successful

Definition at line 926 of file persistenceManager.h.

## readObjectSmartPointer()

template<typename T>

bool BALL::PersistenceManager::readObjectSmartPointer | ( | boost::shared_ptr< T > & | s_ptr,
|  | const char * | name )

Read a smart pointer to a PersistentObject. This method also checks header and trailer, and registers a shared pointer for later updating when an object with corresponding this pointer has been read.

Parameters

  s_ptr | a mutable shared_ptr reference for later update
  ptr | the pointer stub for the this pointer

Definition at line 892 of file persistenceManager.h.

## readPrimitive()

template<typename T>

bool BALL::PersistenceManager::readPrimitive | ( | T & | t,
|  | const char * | name )

Read a primitive member variable. This method also checks header and trailer of the primitive.

Parameters

  t | a mutable reference of the primitive variable
  name | the expected name of the variable

Returns
  true if readng was successful

Definition at line 827 of file persistenceManager.h.

## readStorableObject()

template<typename T>

bool BALL::PersistenceManager::readStorableObject | ( | T & | t,
|  | const char * | name )

Read a storable object. This method also checks header and trailer of the object.

Parameters

  t | a mutable reference of the object
  name | the expected name of the object

Returns
  true if reading the object was successful.

Definition at line 849 of file persistenceManager.h.

## registerClass()

virtual void BALL::PersistenceManager::registerClass | ( | String | signature,
|  | const CreateMethod | m )

virtual

Register a create method for a class. Each object read by the persistence manager has to be constructed somehow. The persistence manager first reads a class' signature (i.e. a unique identifier in the context of this stream). This is usually the stream name of the class (see getStreamName ), but can be an arbitrary string (without blanks). When reading an object header with a given class signature, the persistence manager tries to find a method to create an instance of this object. For this purpose it contains a StringHashMap object. Each of the classes to be read has to be contained in this hash map together with a method to create an instance of this object. This is done by calling registerClass. The create method is usually the getNew method for a class:

PersistenceManager pm;
pm.registerClass(RTTI::getStreamName<Atom>(), RTTI::getNew<Atom>);
pm.registerClass(RTTI::getStreamName<Composite>(), RTTI::getNew<Composite>);
BALL::PersistenceManager::registerClass
virtual void registerClass(String signature, const CreateMethod m)
BALL::PersistenceManager::PersistenceManager
PersistenceManager()
BALL::RTTI::getStreamName
const char * getStreamName()
Definition rtti.h:122
BALL::RTTI::getNew
void * getNew()
Definition rtti.h:87

Remember to include the baseclasses of each class, too! To register all kernel classes, use the BALL_REGISTER_PERSISTENT_KERNEL_CLASSES macro.

Parameters

  signature | the class signatur
  m | a dynamic class create method

## registerKernelClasses_()

void BALL::PersistenceManager::registerKernelClasses_ | ( |  | ) |

protected

## setIstream()

virtual void BALL::PersistenceManager::setIstream | ( | ::std::istream & | s | ) |

virtual

Set the input stream for persistent objects.

Parameters

  s | the input stream

## setOstream()

virtual void BALL::PersistenceManager::setOstream | ( | ::std::ostream & | s | ) |

virtual

Set the output stream for persistent objects.

Parameters

  s | the output stream

## startOutput()

void BALL::PersistenceManager::startOutput | ( |  | ) |

Start the output to a persistent stream.
This method write a start marker to the output stream and prepares the stream and the persistence manager's internal data structures for the output of an object. The start marker is written via the method writeStreamHeader .

  It need not be called usually, as it is called by operator >>.

## updatePointers_()

bool BALL::PersistenceManager::updatePointers_ | ( |  | ) |

protected

## writeHeader()

virtual void BALL::PersistenceManager::writeHeader | ( | const char * | type_name,
|  | const char * | name,
|  | LongSize | ptr )

pure virtual

Write the header for an object. This method writes the header information containing the class signature, the name and its this pointer. The name information is required to differentiate between base classes of an object and member objects or the object itself. If writeHeader is called for a base class, name should be set to 0. type_name should refer to the stream name of an object (see getStreamName ).

  When defining an object (i.e. when writing the first header to a persistent stream), name should be set to "". For base classes, name has to be set to 0. The exact behaviour of this method is implementation dependend - it is abstract for PersistenceManager.

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## writeName()

virtual void BALL::PersistenceManager::writeName | ( | const char * | name | ) |

pure virtual

Write a variable/member name.

Parameters

  name | the name we want to write

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## writeObjectArray()

template<typename T>

void BALL::PersistenceManager::writeObjectArray | ( | const T * | array,
|  | const char * | name,
|  | Size | size )

Write an array of persistent objects. This method writes size persistent objects to the persistent stream. It also writes the necessary header and trailer.

Parameters

  array | the array of persistent objects
  name | the name (usually the name of the member variable)
  size | the number of elements in the array

Definition at line 952 of file persistenceManager.h.

## writeObjectHeader()

template<typename T>

void BALL::PersistenceManager::writeObjectHeader | ( | const T * | object,
|  | const char * | name = 0 )

Write an object Header. Determine the stream name of the object via

See also
  RTTI and call
  writeHeader.

Parameters

  object | a const pointer to the object
  name | the name of the object

Definition at line 809 of file persistenceManager.h.

## writeObjectPointer()

template<typename T>

void BALL::PersistenceManager::writeObjectPointer | ( | const T * | object,
|  | const char * | name )

Write a pointer to a PersistentObject. This method also writes the necessary header and trailer.

Parameters

  object | a const pointer to the object we want to write
  name | the name of the object pointer (the name of the member variable written)

Definition at line 857 of file persistenceManager.h.

## writeObjectPointerArray()

template<typename T>

void BALL::PersistenceManager::writeObjectPointerArray | ( | T ** | arr,
|  | const char * | name,
|  | const Size | size )

Write an array of pointers to persistent objects. This method writes size persistent objects to the persistent stream. It also writes the necessary header and trailer.

Parameters

  arr | the array of persistent object pointers
  name | the name (usually the name of the member variable)
  size | the number of elements in the array

Definition at line 985 of file persistenceManager.h.

## writeObjectPointerArrayHeader()

virtual void BALL::PersistenceManager::writeObjectPointerArrayHeader | ( | const char * | type_name,
|  | const char * | name,
|  | Size | size )

pure virtual

Write header for an array of pointers to PersistentObjects.

Parameters

  type_name | the stream name of the object type
  name | the name of the object array (?)
  size | the size of the array

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## writeObjectPointerArrayTrailer()

virtual void BALL::PersistenceManager::writeObjectPointerArrayTrailer | ( |  | ) |

pure virtual

Write trailer for an array of pointers to PersistentObjects.

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## writeObjectPointerHeader()

virtual void BALL::PersistenceManager::writeObjectPointerHeader | ( | const char * | type_name,
|  | const char * | name )

pure virtual

Write header for a pointer to a PersistentObject.

Parameters

  type_name | the stream name of the object type
  name | the name of the object

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## writeObjectReference()

template<typename T>

void BALL::PersistenceManager::writeObjectReference | ( | const T & | object,
|  | const char * | name )

Write a reference to a PersistentObject. This method also writes the necessary header and trailer.

Parameters

  object | a const reference to the object
  name | the name of the object (usually the name of the member variable)

Definition at line 911 of file persistenceManager.h.

## writeObjectReferenceHeader()

virtual void BALL::PersistenceManager::writeObjectReferenceHeader | ( | const char * | type_name,
|  | const char * | name )

pure virtual

Write header for a reference to a PersistentObject.

Parameters

  type_name | the stream name of the object type
  name | the name of the object

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## writeObjectTrailer()

void BALL::PersistenceManager::writeObjectTrailer | ( | const char * | name = 0 | ) |

Write an object trailer by calling

See also
  writeTrailer.

Parameters

  name | the name of the object

## writePrimitive()

template<typename T>

void BALL::PersistenceManager::writePrimitive | ( | const T & | t,
|  | const char * | name )

Write a primitive member variable. This method also writes the necessary header and trailer of the primitive.

Parameters

  t | the variable
  name | the name of the variable

Definition at line 818 of file persistenceManager.h.

## writePrimitiveHeader()

virtual void BALL::PersistenceManager::writePrimitiveHeader | ( | const char * | type_name,
|  | const char * | name )

pure virtual

Write type header and name for a primitive type.

Parameters

  type_name | the stream name of the primitive
  name | the name of the primitive

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## writePrimitiveTrailer()

virtual void BALL::PersistenceManager::writePrimitiveTrailer | ( |  | ) |

pure virtual

Write the trailer for a primitive type.

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## writeStorableHeader()

virtual void BALL::PersistenceManager::writeStorableHeader | ( | const char * | type_name,
|  | const char * | name )

pure virtual

Write storable object header.

Parameters

  type_name | the stream name of the storable object
  name | the name of the object

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## writeStorableObject()

template<typename T>

void BALL::PersistenceManager::writeStorableObject | ( | const T & | t,
|  | const char * | name )

Write a storable object. This method also writes header and trailer of the object.

Parameters

  t | the storable object
  name | the name of the object

Definition at line 840 of file persistenceManager.h.

## writeStorableTrailer()

virtual void BALL::PersistenceManager::writeStorableTrailer | ( |  | ) |

pure virtual

Write the trailer for a storable object.

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## writeStreamHeader()

virtual void BALL::PersistenceManager::writeStreamHeader | ( |  | ) |

pure virtual

Write a start marker to the output stream.

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## writeStreamTrailer()

virtual void BALL::PersistenceManager::writeStreamTrailer | ( |  | ) |

pure virtual

Write an end marker to the output stream.

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## writeTrailer()

virtual void BALL::PersistenceManager::writeTrailer | ( | const char * | name = 0 | ) |

pure virtual

Write the trailer for an object.

Parameters

  name | the name of the object

Implemented in BALL::TextPersistenceManager, and BALL::XDRPersistenceManager.

## Member Data Documentation

## create_methods_

StringHashMap<CreateMethod> BALL::PersistenceManager::create_methods_

protected

Definition at line 762 of file persistenceManager.h.

## istr_

::std::istream* BALL::PersistenceManager::istr_

protected

Definition at line 793 of file persistenceManager.h.

## object_in_

ObjectList BALL::PersistenceManager::object_in_

protected

Definition at line 788 of file persistenceManager.h.

## object_out_

ObjectSet BALL::PersistenceManager::object_out_

protected

Definition at line 767 of file persistenceManager.h.

## object_out_needed_

ObjectList BALL::PersistenceManager::object_out_needed_

protected

Definition at line 773 of file persistenceManager.h.

## ostr_

::std::ostream* BALL::PersistenceManager::ostr_

protected

Definition at line 791 of file persistenceManager.h.

## pointer_list_

PointerList BALL::PersistenceManager::pointer_list_

protected

Definition at line 782 of file persistenceManager.h.

## pointer_map_

PointerMap BALL::PersistenceManager::pointer_map_

protected

Definition at line 779 of file persistenceManager.h.

## smart_pointer_list_

SmartPointerList BALL::PersistenceManager::smart_pointer_list_

protected

Definition at line 785 of file persistenceManager.h.