Base interface for readers and writers. More...
#include <ireader_writer_base.h>
Public Member Functions | |
virtual Sint32 | get_error_number () const =0 |
Returns the error number of the last error that happened in this reader or writer, or 0 if no error occurred. More... | |
virtual const char * | get_error_message () const =0 |
Returns the error message of the last error that happened in this reader or writer. More... | |
virtual bool | eof () const =0 |
Returns true if the end of the file has been reached. More... | |
virtual Sint32 | get_file_descriptor () const =0 |
Returns the file descriptor of the stream, or -1 if it is not available. More... | |
Random recorded access | |
virtual bool | supports_recorded_access () const =0 |
Returns true if random recorded access is supported, and false otherwise. More... | |
virtual const IStream_position * | tell_position () const =0 |
Returns the current position in this stream. More... | |
virtual bool | seek_position (const IStream_position *stream_position)=0 |
Repositions the stream to the position stream_position . More... | |
virtual bool | rewind ()=0 |
Resets the stream position to the beginning. More... | |
Random absolute access | |
virtual bool | supports_absolute_access () const =0 |
Returns true if random absolute access is supported, and false otherwise. More... | |
virtual Sint64 | tell_absolute () const =0 |
Returns the absolute position in bytes from the beginning of the stream beginning, or -1 if absolute access is not supported. More... | |
virtual bool | seek_absolute (Sint64 pos)=0 |
Repositions the stream to the absolute position pos . More... | |
virtual Sint64 | get_file_size () const =0 |
Returns the size in bytes of the data in the stream. More... | |
virtual bool | seek_end ()=0 |
Sets the stream position to the end of the file. More... | |
Public Member Functions inherited from mi::base::IInterface | |
virtual Uint32 | retain () const =0 |
Increments the reference count. More... | |
virtual Uint32 | release () const =0 |
Decrements the reference count. More... | |
virtual const IInterface * | get_interface (const Uuid &interface_id) const =0 |
Acquires a const interface from another. More... | |
template<class T> | |
const T * | get_interface () const |
Acquires a const interface from another. More... | |
virtual IInterface * | get_interface (const Uuid &interface_id)=0 |
Acquires a mutable interface from another. More... | |
template<class T> | |
T * | get_interface () |
Acquires a mutable interface from another. More... | |
virtual Uuid | get_iid () const =0 |
Returns the interface ID of the most derived interface. More... | |
Additional Inherited Members | |
Public Types inherited from mi::base::Interface_declare< 0x919370c2, ... > | |
typedef Interface_declare< id1, ... > | Self |
Own type. More... | |
typedef Uuid_t< id1, ... > | IID |
Declares the interface ID (IID) of this interface. More... | |
Public Types inherited from mi::base::IInterface | |
typedef Uuid_t<0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0> | IID |
Declares the interface ID (IID) of this interface. More... | |
Static Public Member Functions inherited from mi::base::Interface_declare< 0x919370c2, ... > | |
static bool | compare_iid (const Uuid &iid) |
Compares the interface ID iid against the interface ID of this interface and of its ancestors. More... | |
Static Public Member Functions inherited from mi::base::IInterface | |
static bool | compare_iid (const Uuid &iid) |
Compares the interface ID iid against the interface ID of this interface. More... | |
Base interface for readers and writers.
Readers and writers are an abstraction of plain byte oriented data access to files or network streamed data. They separate the data access from the data parsing and formatting.
Readers and writers can have certain capabilities. The capabilities are hierarchical, meaning that if a capability is supported, all capabilities above it are supported as well. Possible capabilities are:
The different capabilities are not expressed in a class hierarchy but in query functions and well-defined behavior of all API functions for all capabilities.
Readers and writers are exposed as three interfaces to the importers and exporters: mi::neuraylib::IReader_writer_base (this interface), mi::neuraylib::IReader and mi::neuraylib::IWriter, where the latter two derive from the first.
Readers and writers operate in binary mode only. They do not perform any automatic conversions, for example, such as newline to CR/LF for text mode files on Windows. If you require such conversions for a specific file format, you need to add the necessary control sequences yourself and have your parser accept them correctly.
Read and write sizes, as well as seek and tell positions, are consistently mi::Sint64 types. It is a signed integer since some functions will use -1 as error indicator.
The mi::neuraylib::IReader_writer_base class deals with the common part between reader and writer classes. This includes random access functions, access to an optionally available file descriptor, and handling of error and end-of-file conditions. The file descriptor is provided to support 3rd party libraries that require a file descriptor. It may not be available for all readers/writers.
|
pure virtual |
Returns true
if the end of the file has been reached.
The result is undefined before reading or writing for the first time.
|
pure virtual |
Returns the error message of the last error that happened in this reader or writer.
The returned string might be platform-dependent, e.g., by using strerror()
. The method might return NULL
if get_error_number() returns 0.
|
pure virtual |
Returns the error number of the last error that happened in this reader or writer, or 0 if no error occurred.
|
pure virtual |
Returns the file descriptor of the stream, or -1 if it is not available.
|
pure virtual |
Returns the size in bytes of the data in the stream.
Based on random access, this is a fast operation.
|
pure virtual |
Resets the stream position to the beginning.
true
in case of success (and clears the error condition), and false
in case of errors.
|
pure virtual |
Repositions the stream to the absolute position pos
.
true
in case of success, or false
in case of errors, e.g., if pos
is not valid or absolute access is not supported and the state of the stream remains unchanged.
|
pure virtual |
Sets the stream position to the end of the file.
true
in case of success, or false
in case of errors.
|
pure virtual |
Repositions the stream to the position stream_position
.
true
in case of success, or false
in case of errors, e.g., if stream_position
is not valid or recorded access is not supported and the state of the stream remains unchanged.
|
pure virtual |
Returns true
if random absolute access is supported, and false
otherwise.
|
pure virtual |
Returns true
if random recorded access is supported, and false
otherwise.
|
pure virtual |
Returns the absolute position in bytes from the beginning of the stream beginning, or -1 if absolute access is not supported.
|
pure virtual |
Returns the current position in this stream.