ML Reference
ml::AbstractPersistenceInputStream Class Referenceabstract

Class for reading object data from a stream. More...

#include <mlAbstractPersistenceStream.h>

Inheritance diagram for ml::AbstractPersistenceInputStream:
ml::AbstractPersistenceStream

Public Member Functions

virtual ~AbstractPersistenceInputStream ()
 
int startStructWithVersion (const char *name=nullptr)
 start a struct, returns version of struct (0 if not given)
 
template<typename T >
void read (std::vector< T > &values, const char *name=nullptr)
 Read vectors of primitive values from the stream.
 
template<typename T , size_t n, class DataContainer >
void read (FloatingPointVector< T, n, DataContainer > &value, const char *name=nullptr)
 Read float vectors like vec3f from the stream.
 
template<typename T , size_t n>
void read (TVectorNDBase< T, n > &value, const char *name=nullptr)
 Read integer vectors like ImageVector from the stream.
 
template<typename T , size_t n>
void read (FloatingPointMatrix< T, n > &value, const char *name=nullptr)
 Read float matrices like mat4 from the stream.
 
template<typename T >
void readOptional (T &value, const T &defaultValue, const char *name=nullptr)
 Perform optional reading for all above methods.
 
virtual BasereadObject (const char *name=nullptr)
 Read Base object from stream.
 
virtual void readData (std::string &value, const char *name=nullptr)=0
 Same as above for binary data (std::string misused as binary data container)
 
bool hasNextInStruct (std::string &name)
 Returns true if there is another element in the current struct scope, and if so then sets name to its name.
 
bool isNextInStruct (const char *name)
 Check if an item with the given name comes next in the stream.
 
bool hasNextListItem ()
 Check if there is another item in the current list.
 
void versionCheck (const char *className, int objectVersion, int storedVersion)
 print a warning if the storedVersion is greater than the objectVersion
 
virtual void read (bool &value, const char *name=nullptr)
 Read primitive values from the stream.
 
void read (MLint32 &value, const char *name=nullptr)
 
void read (MLuint32 &value, const char *name=nullptr)
 
void read (MLint64 &value, const char *name=nullptr)
 
void read (MLuint64 &value, const char *name=nullptr)
 
void read (MLfloat &value, const char *name=nullptr)
 
void read (MLdouble &value, const char *name=nullptr)
 
void read (std::string &value, const char *name=nullptr)
 
- Public Member Functions inherited from ml::AbstractPersistenceStream
void startList (const char *name=nullptr, const char *xmlItemName="Item", bool xmlSuppressScope=false)
 Start a new list of values in the data stream, must be ended with endList().
 
void endList ()
 End reading/writing of the list.
 
void startStruct (const char *name=nullptr)
 Start a new struct of values in the data stream, must be ended with endStruct().
 
void endStruct ()
 End reading/writing of struct values.
 
virtual bool isBinary () const =0
 Is the stream in a binary format? (otherwise in a readable text format)
 

Protected Member Functions

 AbstractPersistenceInputStream ()
 
virtual bool hasNextInStructImpl (std::string &name)=0
 Check if an item with the given name comes next in the stream.
 
virtual bool hasNextListItemImpl ()=0
 Check if there is another item in the current list.
 
virtual void readString (const char *name, std::string &value)=0
 Abstract reading method that needs to be implemented by derived classes.
 
virtual void formatError (const std::string &msg)
 indicate format error, by default throw exception
 
virtual bool getObjectID (int &id)=0
 Implementation of Base object persistence, get attribute of currently open structget unique id of object - currently unused.
 
virtual bool getObjectType (std::string &type)=0
 base type name
 
virtual bool getObjectVersion (int &version)=0
 persistence version
 
virtual void readValues (const char *name, size_t expected, std::vector< MLint32 > &values)=0
 Abstract reading methods that need to be implemented by derived classes.
 
virtual void readValues (const char *name, size_t expected, std::vector< MLuint32 > &values)=0
 
virtual void readValues (const char *name, size_t expected, std::vector< MLint64 > &values)=0
 
virtual void readValues (const char *name, size_t expected, std::vector< MLuint64 > &values)=0
 
virtual void readValues (const char *name, size_t expected, std::vector< MLfloat > &values)=0
 
virtual void readValues (const char *name, size_t expected, std::vector< MLdouble > &values)=0
 
- Protected Member Functions inherited from ml::AbstractPersistenceStream
 AbstractPersistenceStream ()
 
virtual ~AbstractPersistenceStream ()
 
virtual void nameCheck (const char *name)
 Check if the name is provided when being in a sub-group, or that no name is provided when being in a list.
 
bool isInList () const
 Check if the stream is currently in "list" mode. Otherwise it is in "struct" mode.
 
size_t nestingDepth () const
 return depth of nesting stack (created by startList/startStruct), used to check nesting rules
 
virtual void internalError (const char *msg, const char *arg=nullptr)
 Log an internal error. Usually called to indicate wrong usage of interface.
 
virtual void startListImpl (const char *name, const char *xmlItemName, bool xmlSuppressScope)=0
 Abstract methods called by above methods, need to be implemented in derived classes.
 
virtual void endListImpl ()=0
 
virtual void startStructImpl (const char *name)=0
 
virtual void endStructImpl ()=0
 

Detailed Description

Class for reading object data from a stream.

This class has read methods for the types bool, MLint32, MLuint32, MLint64, MLuint64, float, double, std::string and all vector and matrix types from MLLinearAlgebra. You can also read binary data (with readData()) and Base objects (with readObject()) from the stream.

You can use the readOptional() methods if an data item need not exist on the stream, but this is for convenience, you can always check with isNextInStruct() (for structure scopes) or hasNextListItem() (for list scopes) if the next item in the stream is like you expect. There is also the hasNextInStruct() method for getting the next item's name in a structure scope.

Definition at line 238 of file mlAbstractPersistenceStream.h.

Constructor & Destructor Documentation

◆ ~AbstractPersistenceInputStream()

virtual ml::AbstractPersistenceInputStream::~AbstractPersistenceInputStream ( )
inlinevirtual

Definition at line 241 of file mlAbstractPersistenceStream.h.

◆ AbstractPersistenceInputStream()

ml::AbstractPersistenceInputStream::AbstractPersistenceInputStream ( )
inlineprotected

Definition at line 338 of file mlAbstractPersistenceStream.h.

Member Function Documentation

◆ formatError()

virtual void ml::AbstractPersistenceInputStream::formatError ( const std::string & msg)
protectedvirtual

indicate format error, by default throw exception

◆ getObjectID()

virtual bool ml::AbstractPersistenceInputStream::getObjectID ( int & id)
protectedpure virtual

Implementation of Base object persistence, get attribute of currently open structget unique id of object - currently unused.

◆ getObjectType()

virtual bool ml::AbstractPersistenceInputStream::getObjectType ( std::string & type)
protectedpure virtual

base type name

◆ getObjectVersion()

virtual bool ml::AbstractPersistenceInputStream::getObjectVersion ( int & version)
protectedpure virtual

persistence version

◆ hasNextInStruct()

bool ml::AbstractPersistenceInputStream::hasNextInStruct ( std::string & name)

Returns true if there is another element in the current struct scope, and if so then sets name to its name.

◆ hasNextInStructImpl()

virtual bool ml::AbstractPersistenceInputStream::hasNextInStructImpl ( std::string & name)
protectedpure virtual

Check if an item with the given name comes next in the stream.

The stream is guaranteed to be in a "struct" scope.

◆ hasNextListItem()

bool ml::AbstractPersistenceInputStream::hasNextListItem ( )

Check if there is another item in the current list.

The stream must be in a "list" scope.

◆ hasNextListItemImpl()

virtual bool ml::AbstractPersistenceInputStream::hasNextListItemImpl ( )
protectedpure virtual

Check if there is another item in the current list.

The stream is guaranteed to be in a "list" scope.

◆ isNextInStruct()

bool ml::AbstractPersistenceInputStream::isNextInStruct ( const char * name)

Check if an item with the given name comes next in the stream.

The stream must be in a "struct" scope.

◆ read() [1/12]

virtual void ml::AbstractPersistenceInputStream::read ( bool & value,
const char * name = nullptr )
virtual

Read primitive values from the stream.

Note: the default implementation reads bools as MLint32 - binary formats might want to be more efficient

◆ read() [2/12]

template<typename T , size_t n>
void ml::AbstractPersistenceInputStream::read ( FloatingPointMatrix< T, n > & value,
const char * name = nullptr )
inline

Read float matrices like mat4 from the stream.

Definition at line 295 of file mlAbstractPersistenceStream.h.

References ml::FloatingPointMatrix< VectorT, size >::setValuesFromPtr().

◆ read() [3/12]

template<typename T , size_t n, class DataContainer >
void ml::AbstractPersistenceInputStream::read ( FloatingPointVector< T, n, DataContainer > & value,
const char * name = nullptr )
inline

Read float vectors like vec3f from the stream.

Definition at line 271 of file mlAbstractPersistenceStream.h.

◆ read() [4/12]

void ml::AbstractPersistenceInputStream::read ( MLdouble & value,
const char * name = nullptr )

◆ read() [5/12]

void ml::AbstractPersistenceInputStream::read ( MLfloat & value,
const char * name = nullptr )

◆ read() [6/12]

void ml::AbstractPersistenceInputStream::read ( MLint32 & value,
const char * name = nullptr )

◆ read() [7/12]

void ml::AbstractPersistenceInputStream::read ( MLint64 & value,
const char * name = nullptr )

◆ read() [8/12]

void ml::AbstractPersistenceInputStream::read ( MLuint32 & value,
const char * name = nullptr )

◆ read() [9/12]

void ml::AbstractPersistenceInputStream::read ( MLuint64 & value,
const char * name = nullptr )

◆ read() [10/12]

void ml::AbstractPersistenceInputStream::read ( std::string & value,
const char * name = nullptr )

◆ read() [11/12]

template<typename T >
void ml::AbstractPersistenceInputStream::read ( std::vector< T > & values,
const char * name = nullptr )
inline

Read vectors of primitive values from the stream.

Currently supported are MLint32, MLuint32, MLint64, MLuint64, MLfloat and MLdouble

Definition at line 263 of file mlAbstractPersistenceStream.h.

◆ read() [12/12]

template<typename T , size_t n>
void ml::AbstractPersistenceInputStream::read ( TVectorNDBase< T, n > & value,
const char * name = nullptr )
inline

Read integer vectors like ImageVector from the stream.

Definition at line 283 of file mlAbstractPersistenceStream.h.

◆ readData()

virtual void ml::AbstractPersistenceInputStream::readData ( std::string & value,
const char * name = nullptr )
pure virtual

Same as above for binary data (std::string misused as binary data container)

◆ readObject()

virtual Base * ml::AbstractPersistenceInputStream::readObject ( const char * name = nullptr)
virtual

Read Base object from stream.

This uses the Base::readFrom() method of the object. Returns NULL if no object is given under name.

◆ readOptional()

template<typename T >
void ml::AbstractPersistenceInputStream::readOptional ( T & value,
const T & defaultValue,
const char * name = nullptr )
inline

Perform optional reading for all above methods.

If the item is not contained in the stream, the given default value is assigned.

Definition at line 306 of file mlAbstractPersistenceStream.h.

◆ readString()

virtual void ml::AbstractPersistenceInputStream::readString ( const char * name,
std::string & value )
protectedpure virtual

Abstract reading method that needs to be implemented by derived classes.

◆ readValues() [1/6]

virtual void ml::AbstractPersistenceInputStream::readValues ( const char * name,
size_t expected,
std::vector< MLdouble > & values )
protectedpure virtual

◆ readValues() [2/6]

virtual void ml::AbstractPersistenceInputStream::readValues ( const char * name,
size_t expected,
std::vector< MLfloat > & values )
protectedpure virtual

◆ readValues() [3/6]

virtual void ml::AbstractPersistenceInputStream::readValues ( const char * name,
size_t expected,
std::vector< MLint32 > & values )
protectedpure virtual

Abstract reading methods that need to be implemented by derived classes.

If expected size is 0, the returned list may have any size, otherwise exactly that number of elements are returned (or an exception is thrown).

◆ readValues() [4/6]

virtual void ml::AbstractPersistenceInputStream::readValues ( const char * name,
size_t expected,
std::vector< MLint64 > & values )
protectedpure virtual

◆ readValues() [5/6]

virtual void ml::AbstractPersistenceInputStream::readValues ( const char * name,
size_t expected,
std::vector< MLuint32 > & values )
protectedpure virtual

◆ readValues() [6/6]

virtual void ml::AbstractPersistenceInputStream::readValues ( const char * name,
size_t expected,
std::vector< MLuint64 > & values )
protectedpure virtual

◆ startStructWithVersion()

int ml::AbstractPersistenceInputStream::startStructWithVersion ( const char * name = nullptr)

start a struct, returns version of struct (0 if not given)

◆ versionCheck()

void ml::AbstractPersistenceInputStream::versionCheck ( const char * className,
int objectVersion,
int storedVersion )

print a warning if the storedVersion is greater than the objectVersion


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