Skip to content
Sections
Personal tools
You are here: Home » BALLView » Documentation » 1.2 » group__Persistence_html

Object Persistence.
[Concepts]


Classes

class BALL::Client
Client class. More...
class BALL::MolecularInformation
MolecularInformation class. More...
class BALL::MoleculeObjectCreator
MoleculeObjectCreator class. More...
class BALL::PersistenceManager
Persistence manager class. More...
class BALL::PersistentObject
The persistent object. More...
class BALL::TextPersistenceManager
Text-format-based persistence manager. More...
class BALL::XDRPersistenceManager
XDR-format-based persistence manager. More...

Detailed Description

Ball provides support for the serialization and deserialization of objects and their platform-independent storage.
All persistent objects have to be derived from PersistentObject. The management, serialization, and deserialization is performed by the PersistenceManager class. A persistence manager possess an input stream and an output stream ( persistent streams ). It can write objects to the output stream, thereby converting them to a portable format and serializing all dependend objects, too. It can also read objects from the input stream, create the corresponding objects dynamically and demangle pointers and references.
There are two main problems related with this trivial persistence concept:
  • multiple inheritence from a single base class
  • static members variables These problems are inherent problems of C++ and cannot be solved. However, they can be avoided in most cases. To circumvent problems related to multiple instances of a common base class (which would normally require virtual inheritence - but this does not solve the problem), we introduced the model storable . Storable objects are not derived from PersistentObject, but they provide two functions (read/write) to write themselves to a persistent stream and to retrieve their contents again.
    Static member variables should usually be ignored when reading/writing persistent objects. However, this has to be decided on a case-by-case basis.
 
 

Powered by Plone

This site conforms to the following standards: