MeVisLab Toolbox Reference
|
Class for reading object data from a stream. More...
#include <mlAbstractPersistenceStream.h>
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 Base * | readObject (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 |
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.
|
inlinevirtual |
Definition at line 241 of file mlAbstractPersistenceStream.h.
|
inlineprotected |
Definition at line 338 of file mlAbstractPersistenceStream.h.
|
protectedvirtual |
indicate format error, by default throw exception
Reimplemented in ml::XMLPersistenceInputStream.
Implementation of Base object persistence, get attribute of currently open structget unique id of object - currently unused.
Implemented in ml::XMLPersistenceInputStream.
|
protectedpure virtual |
base type name
Implemented in ml::XMLPersistenceInputStream.
|
protectedpure virtual |
persistence version
Implemented in ml::XMLPersistenceInputStream.
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.
|
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.
Implemented in ml::XMLPersistenceInputStream.
bool ml::AbstractPersistenceInputStream::hasNextListItem | ( | ) |
Check if there is another item in the current list.
The stream must be in a "list" scope.
Check if there is another item in the current list.
The stream is guaranteed to be in a "list" scope.
Implemented in ml::XMLPersistenceInputStream.
Check if an item with the given name comes next in the stream.
The stream must be in a "struct" scope.
|
virtual |
Read primitive values from the stream.
Note: the default implementation reads bools as MLint32 - binary formats might want to be more efficient
|
inline |
Read float matrices like mat4 from the stream.
Definition at line 295 of file mlAbstractPersistenceStream.h.
References mlrange_cast(), and ml::FloatingPointMatrix< VectorT, size >::setValuesFromPtr().
|
inline |
Read float vectors like vec3f from the stream.
Definition at line 271 of file mlAbstractPersistenceStream.h.
References mlrange_cast().
|
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.
|
inline |
Read integer vectors like ImageVector from the stream.
Definition at line 283 of file mlAbstractPersistenceStream.h.
References mlrange_cast().
|
pure virtual |
Same as above for binary data (std::string misused as binary data container)
Implemented in ml::XMLPersistenceInputStream.
|
virtual |
Read Base object from stream.
This uses the Base::readFrom() method of the object. Returns NULL if no object is given under name.
|
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.
|
protectedpure virtual |
Abstract reading method that needs to be implemented by derived classes.
Implemented in ml::XMLPersistenceInputStream.
|
protectedpure virtual |
Implemented in ml::XMLPersistenceInputStream.
|
protectedpure virtual |
Implemented in ml::XMLPersistenceInputStream.
|
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).
Implemented in ml::XMLPersistenceInputStream.
|
protectedpure virtual |
Implemented in ml::XMLPersistenceInputStream.
|
protectedpure virtual |
Implemented in ml::XMLPersistenceInputStream.
|
protectedpure virtual |
Implemented in ml::XMLPersistenceInputStream.
start a struct, returns version of struct (0 if not given)
void ml::AbstractPersistenceInputStream::versionCheck | ( | const char * | className, |
int | objectVersion, | ||
int | storedVersion ) |
print a warning if the storedVersion is greater than the objectVersion