AGX Dynamics 2.40.0.0
Loading...
Searching...
No Matches
agxStream::InputArchive Class Reference

Class for reading a binary stream of serialized data. More...

#include <InputArchive.h>

+ Inheritance diagram for agxStream::InputArchive:

Public Types

typedef agx::HashTable< agx::UInt, bool > BuildConfigurationTable
 
typedef agx::Vector< std::string > IdToClassNameVector
 
typedef agx::VectorPOD< Serializable * > IdToObjectVector
 
typedef agx::Vector< StorageAgent * > IdToStorageAgentVector
 
typedef agx::Event3< agx::UInt32, Serializable *, const std::string & > RestoreEvent
 
enum  RestoreMode { TRY_BY_VALUE , TRY_BY_REFERENCE , DEFAULT = TRY_BY_REFERENCE }
 

Public Member Functions

 InputArchive (std::istream &inputStream)
 
 InputArchive (std::istream &inputStream, IdToObjectVector &objectCache, IdToClassNameVector &nameCache)
 
bool addRestoreListener (RestoreListener *listener)
 Add a listener that will be called for each restored Serializable object.
 
virtual void beginSection (const char *title) override
 
virtual void endSection (const char *title) override
 
bool eof () const
 
agx::String getAppName () const
 
agx::String getArchiveDate () const
 
virtual void getAttribute (const char *name, agx::Int32 &value)
 
virtual void getAttribute (const char *name, agx::Int8 &value)
 
virtual void getAttribute (const char *name, agx::UInt16 &value)
 
virtual void getAttribute (const char *name, agx::UInt32 &value)
 
virtual void getAttribute (const char *name, agx::UInt64 &value)
 
virtual void getAttribute (const char *name, agx::UInt8 &value)
 
virtual void getAttribute (const char *name, agx::Uuid &value)
 
virtual void getAttribute (const char *name, bool &value)
 
virtual void getAttribute (const char *name, char &value)
 
virtual void getAttribute (const char *name, double &value)
 
virtual void getAttribute (const char *name, float &value)
 
virtual void getAttribute (const char *name, std::string &value)
 
agx::String getBuildDate () const
 
const BuildConfigurationTablegetBuildFlags () const
 
agx::String getBuildTime () const
 
bool getEndianMatch () const
 
agx::UInt8 getGenerationVersion () const
 
agx::UInt8 getMajorVersion () const
 
agx::UInt8 getMinorVersion () const
 
int getNumObjectsRead () const
 
agx::UInt8 getPatchVersion () const
 
RestoreMode getRestoreMode () const
 
agx::String getRevision () const
 
agx::UInt16 getSerializationVersion () const
 
std::istream & getStream ()
 Return a reference to the inputstream.
 
size_t getVersion () const
 
bool hasModification (const char *str) const
 
bool hasModifications (const agx::StringVector &modifications) const
 
void open ()
 
virtual void read (agx::AffineMatrix4x4d &val)
 
virtual void read (agx::AffineMatrix4x4f &val)
 
virtual void read (agx::Int16 &val)
 
virtual void read (agx::Int32 &val)
 
virtual void read (agx::Int64 &val)
 
virtual void read (agx::Int8 &val)
 
virtual void read (agx::Matrix3x3d &val)
 
virtual void read (agx::Matrix3x3f &val)
 
virtual void read (agx::Name &val)
 
virtual void read (agx::Quat &val)
 
virtual void read (agx::RangeReal &val)
 
virtual void read (agx::SPDMatrix3x3 &val)
 
virtual void read (agx::String &val)
 
virtual void read (agx::UInt16 &val)
 
virtual void read (agx::UInt32 &val)
 
virtual void read (agx::UInt64 &val)
 
virtual void read (agx::UInt8 &val)
 
virtual void read (agx::Uuid &val)
 
virtual void read (agx::Vec2d &val)
 
virtual void read (agx::Vec2f &val)
 
virtual void read (agx::Vec2i32 &val)
 
virtual void read (agx::Vec2i64 &val)
 
virtual void read (agx::Vec3d &val)
 
virtual void read (agx::Vec3f &val)
 
virtual void read (agx::Vec3i32 &val)
 
virtual void read (agx::Vec3i64 &val)
 
virtual void read (agx::Vec4d &val)
 
virtual void read (agx::Vec4f &val)
 
virtual void read (bool &val)
 
virtual void read (char &val)
 
virtual void read (double &val)
 
virtual void read (float &val)
 
virtual void read (std::string &val)
 
virtual void read (void *buf, size_t len)
 This method will read raw data from the archive.
 
template<typename VECTOR_TYPE >
AGXCORE_EXPORT void read_vector (const agx::String &name, VECTOR_TYPE &val)
 Read an array of data.
 
SerializablereadObjectByRef ()
 
bool readObjectByVal (Serializable &obj)
 
template<typename T >
void readRef (T **obj, StorageMode mode)
 
void readVal (Serializable &obj, StorageMode mode)
 
bool removeRestoreListener (RestoreListener *listener)
 Remove a RestoreListener.
 
void setFinished ()
 Must be called when archive is de-serialized successfully.
 
void setRestoreMode (RestoreMode mode)
 
- Public Member Functions inherited from agxStream::Archive
 Archive ()
 
virtual void beginSection (const char *)=0
 
virtual void close ()
 
virtual void endSection (const char *)=0
 
bool getBinaryMode () const
 
bool isOpen () const
 
virtual void newAttribute ()
 Called whenever a new item is initiated.
 
void setBinaryMode (bool m)
 
- Public Member Functions inherited from agx::Referenced
 Referenced ()
 Default constructor.
 
 Referenced (const Referenced &)
 
template<typename T >
T * as ()
 Subclass casting.
 
template<typename T >
const T * as () const
 
template<typename T >
T * asSafe ()
 Safe subclass casting, return nullptr if template type does not match.
 
template<typename T >
const T * asSafe () const
 
int getReferenceCount () const
 
template<typename T >
bool is () const
 Subclass test.
 
Referencedoperator= (const Referenced &)
 Assignment operator. Will increment the number of references to the referenced object.
 
void reference (void *ptr=nullptr) const
 Explicitly increment the reference count by one, indicating that this object has another pointer which is referencing it.
 
void unreference (void *ptr=nullptr) const
 Decrement the reference count by one, indicating that a pointer to this object is referencing it.
 
void unreference_nodelete () const
 Decrement the reference count by one, indicating that a pointer to this object is referencing it.
 

Public Attributes

RestoreEvent restoreEvent
 

Protected Types

typedef agx::HashTable< RestoreListener *, RestoreListenerRefRestoreListenerHash
 

Protected Member Functions

 InputArchive (const InputArchive &inputStream)
 
virtual ~InputArchive ()
 Destructor.
 
void eof (bool flag)
 
virtual size_t getNumBytesRead () const
 
agx::String getSerializationVersionStringMessage () const
 
agx::String getVersionStringMessage () const
 
InputArchiveoperator= (const InputArchive &)
 
virtual void readArchiveHeader ()
 
void readCompareBitSize ()
 
void readHeaderData ()
 
virtual void readObjectHeader (StorageMode &storageMode, StorageAgent *&agent)
 
virtual void readTypeHeader (StorageAgent *&agent)
 
bool removeObject (Serializable *object)
 Remove the serialized object from list.
 
- Protected Member Functions inherited from agxStream::Archive
virtual ~Archive ()
 Destructor.
 
void open ()
 
- Protected Member Functions inherited from agx::Referenced
virtual ~Referenced ()
 Destructor.
 
void allocateObserverVector () const
 
void deleteUsingDeleteHandler () const
 

Protected Attributes

IdToClassNameVector m_defaultNameCache
 
IdToObjectVector m_defaultObjectCache
 
IdToClassNameVectorm_idToClassNameVector
 
IdToObjectVectorm_IdToObjectVector
 
IdToStorageAgentVector m_IdToStorageAgentVector
 
std::istream & m_inputStream
 
RestoreListenerHash m_restoreListeners
 
- Protected Attributes inherited from agxStream::Archive
bool m_isOpen
 
- Protected Attributes inherited from agx::Referenced
Mutex m_mutex
 
ObserverContainer m_observers
 
AtomicValue m_refCount
 

Additional Inherited Members

- Static Public Member Functions inherited from agx::Referenced
template<typename T >
static bool ValidateCast (const Referenced *object)
 
- Static Protected Member Functions inherited from agx::Referenced
static DeleteHandlergetDeleteHandler ()
 
static void setDeleteHandler (DeleteHandler *handler)
 Internal: Set a DeleteHandler to which deletion of all referenced counted objects will be delegated to.
 

Detailed Description

Class for reading a binary stream of serialized data.

Definition at line 50 of file InputArchive.h.

Member Typedef Documentation

◆ BuildConfigurationTable

◆ IdToClassNameVector

Definition at line 59 of file InputArchive.h.

◆ IdToObjectVector

◆ IdToStorageAgentVector

◆ RestoreEvent

Definition at line 54 of file InputArchive.h.

◆ RestoreListenerHash

Member Enumeration Documentation

◆ RestoreMode

Enumerator
TRY_BY_VALUE 

! Restore by value, even if its a pointer that is given to the serialization. If pointer==nullptr, restore by reference.

TRY_BY_REFERENCE 

! Restore by reference when possible. Even if pointer given is != nullptr, use BY_REFERENCE

DEFAULT 

Definition at line 217 of file InputArchive.h.

Constructor & Destructor Documentation

◆ InputArchive() [1/3]

agxStream::InputArchive::InputArchive ( std::istream &  inputStream)

◆ InputArchive() [2/3]

agxStream::InputArchive::InputArchive ( std::istream &  inputStream,
IdToObjectVector objectCache,
IdToClassNameVector nameCache 
)

◆ ~InputArchive()

virtual agxStream::InputArchive::~InputArchive ( )
protectedvirtual

Destructor.

◆ InputArchive() [3/3]

agxStream::InputArchive::InputArchive ( const InputArchive inputStream)
protected

Member Function Documentation

◆ addRestoreListener()

bool agxStream::InputArchive::addRestoreListener ( RestoreListener listener)

Add a listener that will be called for each restored Serializable object.

Returns
true if successfully added. False if listener already is added.

◆ beginSection()

virtual void agxStream::InputArchive::beginSection ( const char *  title)
overridevirtual

◆ endSection()

virtual void agxStream::InputArchive::endSection ( const char *  title)
overridevirtual

◆ eof() [1/2]

bool agxStream::InputArchive::eof ( ) const
inline
Returns
true if eof is reached during reading

Definition at line 356 of file InputArchive.h.

Referenced by agxStream::RestoreObjects< T >::RestoreObjects().

◆ eof() [2/2]

void agxStream::InputArchive::eof ( bool  flag)
inlineprotected

Definition at line 360 of file InputArchive.h.

◆ getAppName()

agx::String agxStream::InputArchive::getAppName ( ) const
Returns
the string written for application

◆ getArchiveDate()

agx::String agxStream::InputArchive::getArchiveDate ( ) const
Returns
the date/time in ISO format YYYY-MM-DDTHH:MM:SS when the archive was written

◆ getAttribute() [1/12]

virtual void agxStream::InputArchive::getAttribute ( const char *  name,
agx::Int32 value 
)
virtual

Reimplemented in agxStream::XMLInputArchive.

◆ getAttribute() [2/12]

virtual void agxStream::InputArchive::getAttribute ( const char *  name,
agx::Int8 value 
)
virtual

Reimplemented in agxStream::XMLInputArchive.

◆ getAttribute() [3/12]

virtual void agxStream::InputArchive::getAttribute ( const char *  name,
agx::UInt16 value 
)
virtual

Reimplemented in agxStream::XMLInputArchive.

◆ getAttribute() [4/12]

virtual void agxStream::InputArchive::getAttribute ( const char *  name,
agx::UInt32 value 
)
virtual

Reimplemented in agxStream::XMLInputArchive.

◆ getAttribute() [5/12]

virtual void agxStream::InputArchive::getAttribute ( const char *  name,
agx::UInt64 value 
)
virtual

Reimplemented in agxStream::XMLInputArchive.

◆ getAttribute() [6/12]

virtual void agxStream::InputArchive::getAttribute ( const char *  name,
agx::UInt8 value 
)
virtual

Reimplemented in agxStream::XMLInputArchive.

◆ getAttribute() [7/12]

virtual void agxStream::InputArchive::getAttribute ( const char *  name,
agx::Uuid value 
)
virtual

Reimplemented in agxStream::XMLInputArchive.

◆ getAttribute() [8/12]

virtual void agxStream::InputArchive::getAttribute ( const char *  name,
bool &  value 
)
virtual

Reimplemented in agxStream::XMLInputArchive.

◆ getAttribute() [9/12]

virtual void agxStream::InputArchive::getAttribute ( const char *  name,
char &  value 
)
virtual

Reimplemented in agxStream::XMLInputArchive.

◆ getAttribute() [10/12]

virtual void agxStream::InputArchive::getAttribute ( const char *  name,
double &  value 
)
virtual

◆ getAttribute() [11/12]

virtual void agxStream::InputArchive::getAttribute ( const char *  name,
float &  value 
)
virtual

Reimplemented in agxStream::XMLInputArchive.

◆ getAttribute() [12/12]

virtual void agxStream::InputArchive::getAttribute ( const char *  name,
std::string &  value 
)
virtual

Reimplemented in agxStream::XMLInputArchive.

◆ getBuildDate()

agx::String agxStream::InputArchive::getBuildDate ( ) const
Returns
the build date of agx which wrote the archive

◆ getBuildFlags()

const BuildConfigurationTable & agxStream::InputArchive::getBuildFlags ( ) const
Returns
a table with various flags which was used to build the agx version used at writing this archive.

◆ getBuildTime()

agx::String agxStream::InputArchive::getBuildTime ( ) const
Returns
the build time of agx which wrote the archive

◆ getEndianMatch()

bool agxStream::InputArchive::getEndianMatch ( ) const
Returns
true if the input archive matches the current platforms endian

◆ getGenerationVersion()

agx::UInt8 agxStream::InputArchive::getGenerationVersion ( ) const
Returns
the generation version specified during writing

◆ getMajorVersion()

agx::UInt8 agxStream::InputArchive::getMajorVersion ( ) const
Returns
the major version specified during writing

◆ getMinorVersion()

agx::UInt8 agxStream::InputArchive::getMinorVersion ( ) const
Returns
the minor version specified during writing

◆ getNumBytesRead()

virtual size_t agxStream::InputArchive::getNumBytesRead ( ) const
protectedvirtual

Reimplemented in agxStream::XMLInputArchive.

◆ getNumObjectsRead()

int agxStream::InputArchive::getNumObjectsRead ( ) const
Returns
the number of objects read so far

◆ getPatchVersion()

agx::UInt8 agxStream::InputArchive::getPatchVersion ( ) const
Returns
the patch version specified during writing

◆ getRestoreMode()

RestoreMode agxStream::InputArchive::getRestoreMode ( ) const

◆ getRevision()

agx::String agxStream::InputArchive::getRevision ( ) const
Returns
the revision specified during writing, "" if no revision was written/available

◆ getSerializationVersion()

agx::UInt16 agxStream::InputArchive::getSerializationVersion ( ) const

◆ getSerializationVersionStringMessage()

agx::String agxStream::InputArchive::getSerializationVersionStringMessage ( ) const
protected
Returns
a string with AGX serialization version and Archive serialization version used for error message reporting.

◆ getStream()

std::istream & agxStream::InputArchive::getStream ( )

Return a reference to the inputstream.

◆ getVersion()

size_t agxStream::InputArchive::getVersion ( ) const
Returns
the version of the restored data as a size_t for version comparison using AGX_CALC_VERSION

◆ getVersionStringMessage()

agx::String agxStream::InputArchive::getVersionStringMessage ( ) const
protected
Returns
a string with AGX version and Archive version used for error message reporting.

◆ hasModification()

bool agxStream::InputArchive::hasModification ( const char *  str) const
Returns
true if archive contains a specified modification

◆ hasModifications()

bool agxStream::InputArchive::hasModifications ( const agx::StringVector modifications) const
Returns
true if all modifications is represented in the current archive

◆ open()

void agxStream::InputArchive::open ( )

◆ operator=()

InputArchive & agxStream::InputArchive::operator= ( const InputArchive )
protected

◆ read() [1/34]

virtual void agxStream::InputArchive::read ( agx::AffineMatrix4x4d val)
virtual

Reimplemented in agxStream::XMLInputArchive.

◆ read() [2/34]

virtual void agxStream::InputArchive::read ( agx::AffineMatrix4x4f val)
virtual

Reimplemented in agxStream::XMLInputArchive.

◆ read() [3/34]

virtual void agxStream::InputArchive::read ( agx::Int16 val)
virtual

◆ read() [4/34]

virtual void agxStream::InputArchive::read ( agx::Int32 val)
virtual

◆ read() [5/34]

virtual void agxStream::InputArchive::read ( agx::Int64 val)
virtual

◆ read() [6/34]

virtual void agxStream::InputArchive::read ( agx::Int8 val)
virtual

◆ read() [7/34]

virtual void agxStream::InputArchive::read ( agx::Matrix3x3d val)
virtual

Reimplemented in agxStream::XMLInputArchive.

◆ read() [8/34]

virtual void agxStream::InputArchive::read ( agx::Matrix3x3f val)
virtual

Reimplemented in agxStream::XMLInputArchive.

◆ read() [9/34]

virtual void agxStream::InputArchive::read ( agx::Name val)
virtual

Reimplemented in agxStream::XMLInputArchive.

◆ read() [10/34]

virtual void agxStream::InputArchive::read ( agx::Quat val)
virtual

Reimplemented in agxStream::XMLInputArchive.

◆ read() [11/34]

virtual void agxStream::InputArchive::read ( agx::RangeReal val)
virtual

Reimplemented in agxStream::XMLInputArchive.

◆ read() [12/34]

virtual void agxStream::InputArchive::read ( agx::SPDMatrix3x3 val)
virtual

Reimplemented in agxStream::XMLInputArchive.

◆ read() [13/34]

virtual void agxStream::InputArchive::read ( agx::String val)
virtual

Reimplemented in agxStream::XMLInputArchive.

◆ read() [14/34]

virtual void agxStream::InputArchive::read ( agx::UInt16 val)
virtual

◆ read() [15/34]

virtual void agxStream::InputArchive::read ( agx::UInt32 val)
virtual

◆ read() [16/34]

virtual void agxStream::InputArchive::read ( agx::UInt64 val)
virtual

◆ read() [17/34]

virtual void agxStream::InputArchive::read ( agx::UInt8 val)
virtual

◆ read() [18/34]

virtual void agxStream::InputArchive::read ( agx::Uuid val)
virtual

◆ read() [19/34]

virtual void agxStream::InputArchive::read ( agx::Vec2d val)
virtual

Reimplemented in agxStream::XMLInputArchive.

◆ read() [20/34]

virtual void agxStream::InputArchive::read ( agx::Vec2f val)
virtual

Reimplemented in agxStream::XMLInputArchive.

◆ read() [21/34]

virtual void agxStream::InputArchive::read ( agx::Vec2i32 val)
virtual

Reimplemented in agxStream::XMLInputArchive.

◆ read() [22/34]

virtual void agxStream::InputArchive::read ( agx::Vec2i64 val)
virtual

Reimplemented in agxStream::XMLInputArchive.

◆ read() [23/34]

virtual void agxStream::InputArchive::read ( agx::Vec3d val)
virtual

◆ read() [24/34]

virtual void agxStream::InputArchive::read ( agx::Vec3f val)
virtual

◆ read() [25/34]

virtual void agxStream::InputArchive::read ( agx::Vec3i32 val)
virtual

Reimplemented in agxStream::XMLInputArchive.

◆ read() [26/34]

virtual void agxStream::InputArchive::read ( agx::Vec3i64 val)
virtual

Reimplemented in agxStream::XMLInputArchive.

◆ read() [27/34]

virtual void agxStream::InputArchive::read ( agx::Vec4d val)
virtual

Reimplemented in agxStream::XMLInputArchive.

◆ read() [28/34]

virtual void agxStream::InputArchive::read ( agx::Vec4f val)
virtual

Reimplemented in agxStream::XMLInputArchive.

◆ read() [29/34]

virtual void agxStream::InputArchive::read ( bool &  val)
virtual

◆ read() [30/34]

virtual void agxStream::InputArchive::read ( char &  val)
virtual

◆ read() [31/34]

virtual void agxStream::InputArchive::read ( double &  val)
virtual

◆ read() [32/34]

virtual void agxStream::InputArchive::read ( float &  val)
virtual

◆ read() [33/34]

virtual void agxStream::InputArchive::read ( std::string &  val)
virtual

◆ read() [34/34]

virtual void agxStream::InputArchive::read ( void *  buf,
size_t  len 
)
virtual

This method will read raw data from the archive.

Notice that you should always have called beginSection() prior to calling this method. Otherwise it is not compatible with XML input

Parameters
buf- Pointer to the buffer where data will be written
len- Number of bytes to read

Reimplemented in agxStream::XMLInputArchive, and agxStream::XMLInputArchive.

◆ read_vector()

template<typename VECTOR_TYPE >
AGXCORE_EXPORT void agxStream::InputArchive::read_vector ( const agx::String name,
VECTOR_TYPE &  val 
)

Read an array of data.

Only works for agx::VectorPOD<> types.

Parameters
name- name of the vector data
val- Target of the read vector data.

◆ readArchiveHeader()

virtual void agxStream::InputArchive::readArchiveHeader ( )
protectedvirtual

◆ readCompareBitSize()

void agxStream::InputArchive::readCompareBitSize ( )
protected

◆ readHeaderData()

void agxStream::InputArchive::readHeaderData ( )
protected

◆ readObjectByRef()

Serializable * agxStream::InputArchive::readObjectByRef ( )

◆ readObjectByVal()

bool agxStream::InputArchive::readObjectByVal ( Serializable obj)

◆ readObjectHeader()

virtual void agxStream::InputArchive::readObjectHeader ( StorageMode storageMode,
StorageAgent *&  agent 
)
protectedvirtual

◆ readRef()

template<typename T >
void agxStream::InputArchive::readRef ( T **  obj,
StorageMode  mode 
)
inline

◆ readTypeHeader()

virtual void agxStream::InputArchive::readTypeHeader ( StorageAgent *&  agent)
protectedvirtual

◆ readVal()

void agxStream::InputArchive::readVal ( Serializable obj,
StorageMode  mode 
)

◆ removeObject()

bool agxStream::InputArchive::removeObject ( Serializable object)
protected

Remove the serialized object from list.

◆ removeRestoreListener()

bool agxStream::InputArchive::removeRestoreListener ( RestoreListener listener)

Remove a RestoreListener.

Returns
true if listener was located and removed

◆ setFinished()

void agxStream::InputArchive::setFinished ( )

Must be called when archive is de-serialized successfully.

If not, all dynamically allocated objects will be deleted.

◆ setRestoreMode()

void agxStream::InputArchive::setRestoreMode ( RestoreMode  mode)

Member Data Documentation

◆ m_defaultNameCache

IdToClassNameVector agxStream::InputArchive::m_defaultNameCache
protected

Definition at line 294 of file InputArchive.h.

◆ m_defaultObjectCache

IdToObjectVector agxStream::InputArchive::m_defaultObjectCache
protected

Definition at line 292 of file InputArchive.h.

◆ m_idToClassNameVector

IdToClassNameVector& agxStream::InputArchive::m_idToClassNameVector
protected

Definition at line 295 of file InputArchive.h.

◆ m_IdToObjectVector

IdToObjectVector& agxStream::InputArchive::m_IdToObjectVector
protected

Definition at line 293 of file InputArchive.h.

◆ m_IdToStorageAgentVector

IdToStorageAgentVector agxStream::InputArchive::m_IdToStorageAgentVector
protected

Definition at line 296 of file InputArchive.h.

◆ m_inputStream

std::istream& agxStream::InputArchive::m_inputStream
protected

Definition at line 291 of file InputArchive.h.

◆ m_restoreListeners

RestoreListenerHash agxStream::InputArchive::m_restoreListeners
protected

Definition at line 303 of file InputArchive.h.

◆ restoreEvent

RestoreEvent agxStream::InputArchive::restoreEvent

Definition at line 55 of file InputArchive.h.


The documentation for this class was generated from the following file: