---
name: "ost_Engine"
section: "3"
platform: "linux"
package: "libcommoncpp2-doc"
version: "1.8.1-10"
release: "Debian 11 (Bullseye)"
platforms: ["linux"]
url: "https://new.carta.tech/ost_Engine"
---

# ost\_Engine(3)

Engine.

## NAME

ost::Engine - **Engine**.

## SYNOPSIS

`#include <persist.h>`

### Public Types

enum **EngineMode** { **modeRead**, **modeWrite** }\
 These are the modes the Persistence::Engine can work in.

### Public Member Functions

**Engine** (std::iostream &stream, **EngineMode** mode, bool compress=true) **THROWS**(PersistException)\
 Constructs a Persistence::Engine with the specified stream in the given mode.  void **sync** ()\
 This Flushes the buffers and closes the Persistence::Engine this must happen before the underlying stream is shut down.  bool **more** ()\
 This says there are more objects to deserialize.  virtual **~Engine** ()\
 void **write** (const **BaseObject** &object) **THROWS**(PersistException)\
 writes a **BaseObject** from a reference.  void **write** (const **BaseObject** \*object) **THROWS**(PersistException)\
 writes a **BaseObject** from a pointer.  void **write** (**int8** i) **THROWS**(PersistException)\
 void **write** (**uint8** i) **THROWS**(PersistException)\
 void **write** (**int16** i) **THROWS**(PersistException)\
 void **write** (**uint16** i) **THROWS**(PersistException)\
 void **write** (**int32** i) **THROWS**(PersistException)\
 void **write** (**uint32** i) **THROWS**(PersistException)\
 void **write** (float i) **THROWS**(PersistException)\
 void **write** (double i) **THROWS**(PersistException)\
 void **write** (const **String** &str) **THROWS**(PersistException)\
 void **write** (const std::string &str) **THROWS**(PersistException)\
 void **writeBinary** (const **uint8** \*data, const **uint32** size) **THROWS**(PersistException)\
 void **read** (**BaseObject** &object) **THROWS**(PersistException)\
 reads a **BaseObject** into a reference overwriting the object.  void **read** (**BaseObject** \*&object) **THROWS**(PersistException)\
 reads a **BaseObject** into a pointer allocating memory for the object if necessary.  void **read** (**int8** &i) **THROWS**(PersistException)\
 void **read** (**uint8** &i) **THROWS**(PersistException)\
 void **read** (**int16** &i) **THROWS**(PersistException)\
 void **read** (**uint16** &i) **THROWS**(PersistException)\
 void **read** (**int32** &i) **THROWS**(PersistException)\
 void **read** (**uint32** &i) **THROWS**(PersistException)\
 void **read** (float &i) **THROWS**(PersistException)\
 void **read** (double &i) **THROWS**(PersistException)\
 void **read** (**String** &str) **THROWS**(PersistException)\
 void **read** (std::string &str) **THROWS**(PersistException)\
 void **readBinary** (**uint8** \*data, **uint32** size) **THROWS**(PersistException)\

### Related Functions

(Note that these are not member functions.)  **\_\_EXPORT** **Engine** & **operator\>\>** (**Engine** &ar, **BaseObject** &ob) **THROWS**(PersistException)\
 **\_\_EXPORT** **Engine** & **operator\>\>** (**Engine** &ar, **BaseObject** \*&ob) **THROWS**(PersistException)\
 **\_\_EXPORT** **Engine** & **operator\<\<** (**Engine** &ar, **BaseObject** const &ob) **THROWS**(PersistException)\
 **\_\_EXPORT** **Engine** & **operator\<\<** (**Engine** &ar, **BaseObject** const \*ob) **THROWS**(PersistException)\
 **\_\_EXPORT** **Engine** & **operator\>\>** (**Engine** &ar, **int8** &ob) **THROWS**(PersistException)\
 **\_\_EXPORT** **Engine** & **operator\<\<** (**Engine** &ar, **int8** ob) **THROWS**(PersistException)\
 **\_\_EXPORT** **Engine** & **operator\>\>** (**Engine** &ar, **uint8** &ob) **THROWS**(PersistException)\
 **\_\_EXPORT** **Engine** & **operator\<\<** (**Engine** &ar, **uint8** ob) **THROWS**(PersistException)\
 **\_\_EXPORT** **Engine** & **operator\>\>** (**Engine** &ar, **int16** &ob) **THROWS**(PersistException)\
 **\_\_EXPORT** **Engine** & **operator\<\<** (**Engine** &ar, **int16** ob) **THROWS**(PersistException)\
 **\_\_EXPORT** **Engine** & **operator\>\>** (**Engine** &ar, **uint16** &ob) **THROWS**(PersistException)\
 **\_\_EXPORT** **Engine** & **operator\<\<** (**Engine** &ar, **uint16** ob) **THROWS**(PersistException)\
 **\_\_EXPORT** **Engine** & **operator\>\>** (**Engine** &ar, **int32** &ob) **THROWS**(PersistException)\
 **\_\_EXPORT** **Engine** & **operator\<\<** (**Engine** &ar, **int32** ob) **THROWS**(PersistException)\
 **\_\_EXPORT** **Engine** & **operator\>\>** (**Engine** &ar, **uint32** &ob) **THROWS**(PersistException)\
 **\_\_EXPORT** **Engine** & **operator\<\<** (**Engine** &ar, **uint32** ob) **THROWS**(PersistException)\
 **\_\_EXPORT** **Engine** & **operator\>\>** (**Engine** &ar, float &ob) **THROWS**(PersistException)\
 **\_\_EXPORT** **Engine** & **operator\<\<** (**Engine** &ar, float ob) **THROWS**(PersistException)\
 **\_\_EXPORT** **Engine** & **operator\>\>** (**Engine** &ar, double &ob) **THROWS**(PersistException)\
 **\_\_EXPORT** **Engine** & **operator\<\<** (**Engine** &ar, double ob) **THROWS**(PersistException)\
 **\_\_EXPORT** **Engine** & **operator\>\>** (**Engine** &ar, **String** &ob) **THROWS**(PersistException)\
 **\_\_EXPORT** **Engine** & **operator\<\<** (**Engine** &ar, **String** ob) **THROWS**(PersistException)\
 **\_\_EXPORT** **Engine** & **operator\>\>** (**Engine** &ar, std::string &ob) **THROWS**(PersistException)\
 **\_\_EXPORT** **Engine** & **operator\<\<** (**Engine** &ar, std::string ob) **THROWS**(PersistException)\
 **\_\_EXPORT** **Engine** & **operator\>\>** (**Engine** &ar, bool &ob) **THROWS**(PersistException)\
 **\_\_EXPORT** **Engine** & **operator\<\<** (**Engine** &ar, bool ob) **THROWS**(PersistException)\
 template\<class T \> **Engine** & **operator\<\<** (**Engine** &ar, typename std::vector\< T \> const &ob) **THROWS**(PersistException)\
 The following are templated classes.  template\<class T \> **Engine** & **operator\>\>** (**Engine** &ar, typename std::vector\< T \> &ob) **THROWS**(PersistException)\
 deserialize a vector of deserializable content from an engine.  template\<class T \> **Engine** & **operator\<\<** (**Engine** &ar, typename std::deque\< T \> const &ob) **THROWS**(PersistException)\
 serialize a deque of some serializable content to the engine  template\<class T \> **Engine** & **operator\>\>** (**Engine** &ar, typename std::deque\< T \> &ob) **THROWS**(PersistException)\
 deserialize a deque of deserializable content from an engine.  template\<class Key , class Value \> **Engine** & **operator\<\<** (**Engine** &ar, typename std::map\< Key, Value \> const &ob) **THROWS**(PersistException)\
 serialize a map with keys/values which both are serializeable to an engine.  template\<class Key , class Value \> **Engine** & **operator\>\>** (**Engine** &ar, typename std::map\< Key, Value \> &ob) **THROWS**(PersistException)\
 deserialize a map with keys/values which both are serializeable from an engine.  template\<class x , class y \> **Engine** & **operator\<\<** (**Engine** &ar, std::pair\< x, y \> &ob) **THROWS**(PersistException)\
 serialize a pair of some serializable content to the engine.  template\<class x , class y \> **Engine** & **operator\>\>** (**Engine** &ar, std::pair\< x, y \> &ob) **THROWS**(PersistException)\
 deserialize a pair of some serializable content to the engine.

## Detailed Description

**Engine**.

This class constructs on a standard C++ STL stream and then operates in the mode specified. The stream passed into the constructor must be a binary mode to function properly.

**Author**

Daniel Silverstone

stream serialization of persistent classes.

## Member Enumeration Documentation

### enum ost::Engine::EngineMode

These are the modes the Persistence::Engine can work in.

**Enumerator**

- *modeRead*

  - *modeWrite*

  ## Constructor & Destructor Documentation

### ost::Engine::Engine (std::iostream & stream, EngineMode mode, bool compress = `true`)

*Constructs a Persistence::Engine with the specified stream in the given mode. The stream must be initialised properly prior to this call or problems will ensue. If built using zlib compress can be used to enable compression*

### virtual ost::Engine::~Engine ()` [virtual]`

## Member Function Documentation

### bool ost::Engine::more ()

*This says there are more objects to deserialize.*

### void ost::Engine::read (BaseObject & object)

*reads a* **BaseObject** *into a reference overwriting the object.*

### void ost::Engine::read (BaseObject \*& object)

*reads a* **BaseObject** *into a pointer allocating memory for the object if necessary.*

### void ost::Engine::read (double & i)` [inline]`

*References CCXX\_ENGINEREAD\_REF.*

### void ost::Engine::read (float & i)` [inline]`

*References CCXX\_ENGINEREAD\_REF.*

### void ost::Engine::read (int16 & i)` [inline]`

*References CCXX\_ENGINEREAD\_REF.*

### void ost::Engine::read (int32 & i)` [inline]`

*References CCXX\_ENGINEREAD\_REF.*

### void ost::Engine::read (int8 & i)` [inline]`

*References CCXX\_ENGINEREAD\_REF.*

### void ost::Engine::read (std::string & str)

### void ost::Engine::read (String & str)

### void ost::Engine::read (uint16 & i)` [inline]`

*References CCXX\_ENGINEREAD\_REF.*

### void ost::Engine::read (uint32 & i)` [inline]`

*References CCXX\_ENGINEREAD\_REF.*

### void ost::Engine::read (uint8 & i)` [inline]`

*References CCXX\_ENGINEREAD\_REF.*

### void ost::Engine::readBinary (uint8 \* data, uint32 size)

### void ost::Engine::sync ()

*This Flushes the buffers and closes the Persistence::Engine this must happen before the underlying stream is shut down.*

### void ost::Engine::write (const BaseObject & object)` [inline]`

*writes a* **BaseObject** *from a reference.*

### void ost::Engine::write (const BaseObject \* object)

*writes a* **BaseObject** *from a pointer.*

### void ost::Engine::write (const std::string & str)

### void ost::Engine::write (const String & str)

### void ost::Engine::write (double i)` [inline]`

*References CCXX\_ENGINEWRITE\_REF.*

### void ost::Engine::write (float i)` [inline]`

*References CCXX\_ENGINEWRITE\_REF.*

### void ost::Engine::write (int16 i)` [inline]`

*References CCXX\_ENGINEWRITE\_REF.*

### void ost::Engine::write (int32 i)` [inline]`

*References CCXX\_ENGINEWRITE\_REF.*

### void ost::Engine::write (int8 i)` [inline]`

*References CCXX\_ENGINEWRITE\_REF.*

### void ost::Engine::write (uint16 i)` [inline]`

*References CCXX\_ENGINEWRITE\_REF.*

### void ost::Engine::write (uint32 i)` [inline]`

*References CCXX\_ENGINEWRITE\_REF.*

### void ost::Engine::write (uint8 i)` [inline]`

*References CCXX\_ENGINEWRITE\_REF.*

### void ost::Engine::writeBinary (const uint8 \* data, const uint32 size)

## Friends And Related Function Documentation

### \_\_EXPORT Engine & operator\<\< (Engine & ar, BaseObject const & ob)` [related]`

### \_\_EXPORT Engine & operator\<\< (Engine & ar, BaseObject const \* ob)` [related]`

### \_\_EXPORT Engine & operator\<\< (Engine & ar, bool ob)` [related]`

### \_\_EXPORT Engine & operator\<\< (Engine & ar, double ob)` [related]`

### \_\_EXPORT Engine & operator\<\< (Engine & ar, float ob)` [related]`

### \_\_EXPORT Engine & operator\<\< (Engine & ar, int16 ob)` [related]`

### \_\_EXPORT Engine & operator\<\< (Engine & ar, int32 ob)` [related]`

### \_\_EXPORT Engine & operator\<\< (Engine & ar, int8 ob)` [related]`

### template\<class x , class y \> Engine & operator\<\< (Engine & ar, std::pair\< x, y \> & ob)` [related]`

*serialize a pair of some serializable content to the engine.*

### \_\_EXPORT Engine & operator\<\< (Engine & ar, std::string ob)` [related]`

### \_\_EXPORT Engine & operator\<\< (Engine & ar, String ob)` [related]`

### template\<class T \> Engine & operator\<\< (Engine & ar, typename std::deque\< T \> const & ob)` [related]`

*serialize a deque of some serializable content to the engine*

### template\<class Key , class Value \> Engine & operator\<\< (Engine & ar, typename std::map\< Key, Value \> const & ob)` [related]`

*serialize a map with keys/values which both are serializeable to an engine.*

### template\<class T \> Engine & operator\<\< (Engine & ar, typename std::vector\< T \> const & ob)` [related]`

*The following are templated classes. serialize a vector of some serializable content to the engine*

### \_\_EXPORT Engine & operator\<\< (Engine & ar, uint16 ob)` [related]`

### \_\_EXPORT Engine & operator\<\< (Engine & ar, uint32 ob)` [related]`

### \_\_EXPORT Engine & operator\<\< (Engine & ar, uint8 ob)` [related]`

### \_\_EXPORT Engine & operator\>\> (Engine & ar, BaseObject & ob)` [related]`

### \_\_EXPORT Engine & operator\>\> (Engine & ar, BaseObject \*& ob)` [related]`

### \_\_EXPORT Engine & operator\>\> (Engine & ar, bool & ob)` [related]`

### \_\_EXPORT Engine & operator\>\> (Engine & ar, double & ob)` [related]`

### \_\_EXPORT Engine & operator\>\> (Engine & ar, float & ob)` [related]`

### \_\_EXPORT Engine & operator\>\> (Engine & ar, int16 & ob)` [related]`

### \_\_EXPORT Engine & operator\>\> (Engine & ar, int32 & ob)` [related]`

### \_\_EXPORT Engine & operator\>\> (Engine & ar, int8 & ob)` [related]`

### template\<class x , class y \> Engine & operator\>\> (Engine & ar, std::pair\< x, y \> & ob)` [related]`

*deserialize a pair of some serializable content to the engine.*

### \_\_EXPORT Engine & operator\>\> (Engine & ar, std::string & ob)` [related]`

### \_\_EXPORT Engine & operator\>\> (Engine & ar, String & ob)` [related]`

### template\<class T \> Engine & operator\>\> (Engine & ar, typename std::deque\< T \> & ob)` [related]`

*deserialize a deque of deserializable content from an engine.*

### template\<class Key , class Value \> Engine & operator\>\> (Engine & ar, typename std::map\< Key, Value \> & ob)` [related]`

*deserialize a map with keys/values which both are serializeable from an engine.*

### template\<class T \> Engine & operator\>\> (Engine & ar, typename std::vector\< T \> & ob)` [related]`

*deserialize a vector of deserializable content from an engine.*

### \_\_EXPORT Engine & operator\>\> (Engine & ar, uint16 & ob)` [related]`

### \_\_EXPORT Engine & operator\>\> (Engine & ar, uint32 & ob)` [related]`

### \_\_EXPORT Engine & operator\>\> (Engine & ar, uint8 & ob)` [related]`

## Author

*Generated automatically by Doxygen for GNU CommonC++ from the source code.*
