MeVisLab Toolbox Reference
|
Base class to implement raw data loaders which need byte swapping and basic file access on byte or raw data level. More...
#include <mlByteDataReader.h>
Public Member Functions | |
ByteDataReader () | |
Default constructor which gets its settings later. | |
ByteDataReader (const std::string &fileName) | |
Constructor already setting the file name. | |
virtual | ~ByteDataReader () |
Destructor (automatically closes the current open file if there is any and clear allocated subimage data). | |
virtual std::string | getFileName () const |
Returns the currently used file name or "" on default case. | |
virtual void | setFileName (const std::string &fileName) |
Sets the new file name. | |
virtual void | open () |
Opens the file if possible, isGood() will return true on success, otherwise false; if byte swapping may be required in file format then derived classes should overwrite this method and call _setNeedsByteSwapping() to make get*BitUWordInLocalEndianess() methods work correctly. | |
virtual bool | isOpen () const |
Returns true if the file is open, otherwise false. | |
virtual void | close () |
Closes the file if it was open, otherwise the call is ignored. | |
virtual bool | isGood () const |
Returns true if the recent operations since the last clearState() call were successful. | |
virtual std::string | getErrorState () const |
Returns the current state string which is non empty on any error, empty otherwise. | |
virtual void | clearErrorState () |
Resets the error state to success, i.e. to an empty string. | |
virtual void | setIndent (const std::string &indent) |
Sets the default indentation string for tag dumps. | |
virtual const std::string & | getIndent () const |
The default indentation string for tag dumps. | |
bool | needsByteSwapping () const |
Returns true if raw file data needs byte swapping, otherwise false; needs to be set with _setNeedsByteSwapping when opening the file in derived classes. | |
virtual void | prefetch () |
Loads all file content into memory to avoid expensive file descriptor access on each get*Word call. | |
virtual const MLuint8 * | getPrefetchData () const |
Returns pointer to prefetch data (or nullptr if not available). | |
virtual void | clearPrefetchData () |
If any data is in the prefetch data memory then it is freed. | |
MLuint8 | get8BitUWord (MLuint64 pos) const |
Read an unsigned 8 bit word from position pos. | |
MLuint16 | get16BitUWord (MLuint64 pos) const |
Read an unsigned 16 bit word from position pos. | |
MLuint16 | get16BitUWordInLocalEndianess (MLuint64 pos) const |
Read an unsigned 16 bit word from position pos and convert it in local endianness. | |
MLuint32 | get32BitUWord (MLuint64 pos) const |
Read an unsigned 32 bit word from position pos. | |
MLuint32 | get32BitUWordInLocalEndianess (MLuint64 pos) const |
Read an unsigned 32 bit word from position pos and convert it in local endianness. | |
MLuint64 | get64BitUWord (MLuint64 pos) const |
Read an unsigned 64 bit word from position pos. | |
MLuint64 | get64BitUWordInLocalEndianess (MLuint64 pos) const |
Read an unsigned 64 bit word from position pos and convert it in local endianness. | |
std::string | getNonTerminatedDataAsString (MLuint originPosition, MLuint numChars) const |
Return a non-null terminated data area starting at position originPosition of length numChars as std::string. | |
MLuint8 * | getDataChunk (MLuint64 pos, MLuint64 numBytes) const |
Reads numBytes from position pos in the file and returns it as allocated data chunk which has to be freed with MLFree(). | |
const MLuint8 * | getPrefetchDataChunk (MLuint64 pos, MLuint64 numBytes) const |
Returns a data pointer to position pos with size numBytes in the prefetch data if available and if chunk size is sufficient. | |
virtual std::string | getAsString (const std::string &prefix="", const std::string &sep=", ", const size_t maxNumBinaryEntries=8, const size_t maxNumStringEntries=20) const |
Convert content to a human readable string with the prefix prefix before all lines and separator sep between all subcomponents. | |
MLint | getFileSizeFromCurrentDescriptor () |
Returns MLFileGetSizeFromDescriptor(_getFileDescriptor()). | |
void | appendStringToState (const std::string &errDesc) const |
Appends the given string to error state string (which also sets bad read state). | |
Protected Member Functions | |
int | _getFileDescriptor () const |
Returns the current file descriptor. | |
void | _appendErrNoToState (const std::string &errDesc) const |
Appends the given string as error description, translates errno to an MLErrorCode an also adds that state as an error description. | |
void | _setNeedsByteSwapping (bool needsSwapping) |
To se set to true in open() by derived classes if raw file data needs byte swapping, otherwise it should be set to false; defaults to false. | |
Base class to implement raw data loaders which need byte swapping and basic file access on byte or raw data level.
Definition at line 23 of file mlByteDataReader.h.
ml::ByteDataReader::ByteDataReader | ( | ) |
Default constructor which gets its settings later.
ml::ByteDataReader::ByteDataReader | ( | const std::string & | fileName | ) |
Constructor already setting the file name.
|
virtual |
Destructor (automatically closes the current open file if there is any and clear allocated subimage data).
Appends the given string as error description, translates errno to an MLErrorCode an also adds that state as an error description.
|
protected |
Returns the current file descriptor.
To se set to true in open() by derived classes if raw file data needs byte swapping, otherwise it should be set to false; defaults to false.
Appends the given string to error state string (which also sets bad read state).
Resets the error state to success, i.e. to an empty string.
If any data is in the prefetch data memory then it is freed.
Closes the file if it was open, otherwise the call is ignored.
Reimplemented in ml::DMFileReader.
Read an unsigned 16 bit word from position pos.
Read an unsigned 16 bit word from position pos and convert it in local endianness.
Read an unsigned 32 bit word from position pos.
Read an unsigned 32 bit word from position pos and convert it in local endianness.
Read an unsigned 64 bit word from position pos.
Read an unsigned 64 bit word from position pos and convert it in local endianness.
Read an unsigned 8 bit word from position pos.
|
virtual |
Convert content to a human readable string with the prefix prefix before all lines and separator sep between all subcomponents.
If a binary tag is displayed then the number of shown values is controlled with maxNumBinaryEntries; if there are more then "..." is displayed instead. If a binary tag of type Uint16 which might be a unicoded string then the number of shown values is controlled with maxNumStringEntries; if there are more then "..." is displayed instead.
Reimplemented in ml::R2SonicWC::R2SonicWCLoader, and ml::DMFileReader.
Reads numBytes from position pos in the file and returns it as allocated data chunk which has to be freed with MLFree().
This function always reads from file even if prefetch() was called before.
|
virtual |
Returns the current state string which is non empty on any error, empty otherwise.
|
virtual |
Returns the currently used file name or "" on default case.
MLint ml::ByteDataReader::getFileSizeFromCurrentDescriptor | ( | ) |
Returns MLFileGetSizeFromDescriptor(_getFileDescriptor()).
The default indentation string for tag dumps.
std::string ml::ByteDataReader::getNonTerminatedDataAsString | ( | MLuint | originPosition, |
MLuint | numChars ) const |
Return a non-null terminated data area starting at position originPosition of length numChars as std::string.
Returns pointer to prefetch data (or nullptr if not available).
Returns a data pointer to position pos with size numBytes in the prefetch data if available and if chunk size is sufficient.
Otherwise an error state is set and nullptr is returned.
Returns true if the recent operations since the last clearState() call were successful.
Returns true if the file is open, otherwise false.
bool ml::ByteDataReader::needsByteSwapping | ( | ) | const |
Returns true if raw file data needs byte swapping, otherwise false; needs to be set with _setNeedsByteSwapping when opening the file in derived classes.
Opens the file if possible, isGood() will return true on success, otherwise false; if byte swapping may be required in file format then derived classes should overwrite this method and call _setNeedsByteSwapping() to make get*BitUWordInLocalEndianess() methods work correctly.
Reimplemented in ml::R2SonicWC::R2SonicWCLoader, and ml::DMFileReader.
Loads all file content into memory to avoid expensive file descriptor access on each get*Word call.
This, however, requires that enough memory is available. Note also that if large files are read and only small sections are read, that prefetching can make everything slower.
Sets the new file name.
Sets the default indentation string for tag dumps.