Simple Stream implementation for accessing files. More...
#include <mitsuba/core/fstream.h>
 Inheritance diagram for mitsuba::FileStream:
 Inheritance diagram for mitsuba::FileStream:| Public Types | |
| enum | EFileMode { EReadOnly = 0, EReadWrite, ETruncWrite, ETruncReadWrite, EAppendWrite, EAppendReadWrite } | 
| Supported file opening modes.  More... | |
|  Public Types inherited from mitsuba::Stream | |
| enum | EByteOrder { EBigEndian = 0, ELittleEndian = 1, ENetworkByteOrder = EBigEndian } | 
| Defines the byte order to use in this Stream.  More... | |
| Public Member Functions | |
| virtual const Class * | getClass () const | 
| Retrieve this object's class.  More... | |
| Constructors | |
| FileStream () | |
| Create a file stream class with no file open.  More... | |
| FileStream (const fs::path &path, EFileMode mode=EReadOnly) | |
| Create a file stream class and open a file with a given EFileMode.  More... | |
| File-specific features | |
| const fs::path & | getPath () const | 
| Return the file path.  More... | |
| void | open (const fs::path &filename, EFileMode mode=EReadOnly) | 
| Open a file with a given open mode.  More... | |
| void | close () | 
| Close the current file.  More... | |
| void | remove () | 
| Remove the current file.  More... | |
| std::string | toString () const | 
| Return a string representation.  More... | |
| Stream interface | |
| void | read (void *ptr, size_t size) | 
| Read a specified amount of data from the stream.  More... | |
| void | write (const void *ptr, size_t size) | 
| Write a specified amount of data into the stream.  More... | |
| void | seek (size_t pos) | 
| Seek to a position inside the stream.  More... | |
| size_t | getPos () const | 
| Get the current position inside the stream.  More... | |
| size_t | getSize () const | 
| Return the size of the stream.  More... | |
| void | truncate (size_t size) | 
| Truncate the stream to a given size.  More... | |
| void | flush () | 
| Flush the stream's buffers.  More... | |
| bool | canWrite () const | 
| Can we write to the stream?  More... | |
| bool | canRead () const | 
| Can we read from the stream?  More... | |
|  Public Member Functions inherited from mitsuba::Stream | |
| Stream () | |
| Create a new stream.  More... | |
| void | skip (size_t amount) | 
| Skip the given number of bytes.  More... | |
| void | writeString (const std::string &value) | 
| Write a null-terminated string to the stream.  More... | |
| void | writeLine (const std::string &value) | 
| Write a string followed by a newline.  More... | |
| void | writeShort (short value) | 
| Write a signed short (16 bit) to the stream.  More... | |
| void | writeShortArray (const short *values, size_t size) | 
| Write an array of signed shorts (16 bit) to the stream.  More... | |
| template<size_t N> | |
| void | writeShortArray (const short(&values)[N]) | 
| Write an array of known size of signed shorts (16 bit) to the stream.  More... | |
| void | writeUShort (unsigned short value) | 
| Write an unsigned short (16 bit) to the stream.  More... | |
| void | writeUShortArray (const unsigned short *values, size_t size) | 
| Write an array of unsigned shorts (16 bit) to the stream.  More... | |
| template<size_t N> | |
| void | writeUShortArray (const unsigned short(&values)[N]) | 
| Write an array of known size of unsigned shorts (16 bit) to the stream.  More... | |
| void | writeInt (int value) | 
| Write a signed int (32 bit) to the stream.  More... | |
| void | writeIntArray (const int *values, size_t size) | 
| Write an array of signed ints (32 bit) to the stream.  More... | |
| template<size_t N> | |
| void | writeIntArray (const int(&values)[N]) | 
| Write an array of known size of signed ints (32 bit) to the stream.  More... | |
| void | writeUInt (unsigned int value) | 
| Write an unsigned int (32 bit) to the stream.  More... | |
| void | writeUIntArray (const unsigned int *values, size_t size) | 
| Write an array of unsigned ints (32 bit) to the stream.  More... | |
| template<size_t N> | |
| void | writeUIntArray (const unsigned int(&values)[N]) | 
| Write an array of known size of unsigned ints (32 bit) to the stream.  More... | |
| void | writeLong (int64_t value) | 
| Write a signed int (64 bit) to the stream.  More... | |
| void | writeLongArray (const int64_t *values, size_t size) | 
| Write an array of signed ints (64 bit) to the stream.  More... | |
| template<size_t N> | |
| void | writeLongArray (const int64_t(&values)[N]) | 
| Write an array of known size of signed ints (64 bit) to the stream.  More... | |
| void | writeULong (uint64_t value) | 
| Write an unsigned int (64 bit) to the stream.  More... | |
| void | writeSize (size_t value) | 
| Write a size value to the stream.  More... | |
| void | writeULongArray (const uint64_t *values, size_t size) | 
| Write an array of unsigned ints (64 bit) to the stream.  More... | |
| template<size_t N> | |
| void | writeULongArray (const uint64_t(&values)[N]) | 
| Write an array of known size of unsigned ints (64 bit) to the stream.  More... | |
| void | writeChar (char value) | 
| Write a signed character (8 bit) to the stream.  More... | |
| void | writeUChar (unsigned char value) | 
| Write an unsigned character (8 bit) to the stream.  More... | |
| void | writeBool (bool value) | 
| Write a boolean (8 bit) to the stream.  More... | |
| void | writeHalf (half value) | 
| Write a half-precision floating point number (16 bit) to the stream.  More... | |
| void | writeHalfArray (const half *data, size_t size) | 
| Write a half-precision floating point array (16 bit) to the stream.  More... | |
| template<size_t N> | |
| void | writeHalfArray (const half(&values)[N]) | 
| Write a known size half-precision floating point array (16 bit) to the stream.  More... | |
| void | writeSingle (float value) | 
| Write a single-precision floating point number (32 bit) to the stream.  More... | |
| void | writeSingleArray (const float *data, size_t size) | 
| Write a single-precision floating point array (32 bit) to the stream.  More... | |
| template<size_t N> | |
| void | writeSingleArray (const float(&values)[N]) | 
| Write a known size single-precision floating point array (32 bit) to the stream.  More... | |
| void | writeDouble (double value) | 
| Write a double-precision floating point number (64 bit) to the stream.  More... | |
| void | writeDoubleArray (const double *data, size_t size) | 
| Write a double-precision floating point array (64 bit) to the stream.  More... | |
| template<size_t N> | |
| void | writeDoubleArray (const double(&values)[N]) | 
| Write a known size double-precision floating point array (64 bit) to the stream.  More... | |
| void | writeFloat (Float value) | 
| Write a floating point number (configured precision) to the stream.  More... | |
| void | writeFloatArray (const Float *data, size_t size) | 
| Write an array of floating point values (configured precision) to the stream.  More... | |
| template<size_t N> | |
| void | writeFloatArray (const Float(&values)[N]) | 
| Write a known size array of floating point values (configured precision) to the stream.  More... | |
| bool | isEOF () const | 
| Return whether we are at the end of the stream.  More... | |
| std::string | readLine () | 
| Read a line from the stream and return it as a string.  More... | |
| std::string | readString () | 
| Read a null-terminated string from the stream.  More... | |
| short | readShort () | 
| Read a signed short (16 bit) from the stream.  More... | |
| void | readShortArray (short *dest, size_t size) | 
| Read an array of signed shorts (16 bit) from the stream.  More... | |
| template<size_t N> | |
| void | readShortArray (short(&values)[N]) | 
| Read an array of known size of signed shorts (16 bit) from the stream.  More... | |
| unsigned short | readUShort () | 
| Read an unsigned short (16 bit) from the stream.  More... | |
| void | readUShortArray (unsigned short *dest, size_t size) | 
| Read an array of unsigned shorts (16 bit) from the stream.  More... | |
| template<size_t N> | |
| void | readUShortArray (short(&values)[N]) | 
| Read an array of known size of unsigned shorts (16 bit) from the stream.  More... | |
| int | readInt () | 
| Read a signed int (32 bit) from the stream.  More... | |
| void | readIntArray (int *dst, size_t size) | 
| Read an array of signed ints (32 bit) from the stream.  More... | |
| template<size_t N> | |
| void | readIntArray (int(&values)[N]) | 
| Read an array of known size of signed ints (32 bit) from the stream.  More... | |
| unsigned int | readUInt () | 
| Read an unsigned int (32 bit) from the stream.  More... | |
| void | readUIntArray (unsigned int *dest, size_t size) | 
| Read an array of unsigned ints (32 bit) from the stream.  More... | |
| template<size_t N> | |
| void | readUIntArray (int(&values)[N]) | 
| Read an array of known size of unsigned ints (32 bit) from the stream.  More... | |
| int64_t | readLong () | 
| Read a signed int (64 bit) from the stream.  More... | |
| void | readLongArray (int64_t *dst, size_t size) | 
| Read an array of signed ints (64 bit) from the stream.  More... | |
| template<size_t N> | |
| void | readLongArray (int64_t(&values)[N]) | 
| Read an array of known size of signed ints (64 bit) from the stream.  More... | |
| uint64_t | readULong () | 
| Read an unsigned int (64 bit) from the stream.  More... | |
| size_t | readSize () | 
| Read a size value from the stream.  More... | |
| void | readULongArray (uint64_t *dst, size_t size) | 
| Read an array of unsigned ints (64 bit) from the stream.  More... | |
| template<size_t N> | |
| void | readULongArray (uint64_t(&values)[N]) | 
| Read an array of known size of unsigned ints (64 bit) from the stream.  More... | |
| char | readChar () | 
| Read a signed character (8 bit) from the stream.  More... | |
| unsigned char | readUChar () | 
| Read an unsigned character (8 bit) from the stream.  More... | |
| bool | readBool () | 
| Read a boolean (8 bit) from the stream.  More... | |
| half | readHalf () | 
| Read a half-precision floating point number (16 bit) from the stream.  More... | |
| void | readHalfArray (half *data, size_t size) | 
| Read a half-precision floating point array (16 bit) from the stream.  More... | |
| template<size_t N> | |
| void | readHalfArray (half(&values)[N]) | 
| Read a known-size half-precision floating point array (16 bit) from the stream.  More... | |
| float | readSingle () | 
| Read a single-precision floating point number (32 bit) from the stream.  More... | |
| void | readSingleArray (float *data, size_t size) | 
| Read a single-precision floating point array (32 bit) from the stream.  More... | |
| template<size_t N> | |
| void | readSingleArray (float(&values)[N]) | 
| Read a known-size single-precision floating point array (32 bit) from the stream.  More... | |
| double | readDouble () | 
| Read a double-precision floating point number (64 bit) from the stream.  More... | |
| void | readDoubleArray (double *data, size_t size) | 
| Read a double-precision floating point array (64 bit) from the stream.  More... | |
| template<size_t N> | |
| void | readDoubleArray (double(&values)[N]) | 
| Read a known-size double-precision floating point array (64 bit) from the stream.  More... | |
| Float | readFloat () | 
| Write a floating point number (configured precision) to the stream.  More... | |
| void | readFloatArray (Float *data, size_t size) | 
| Write an array of floating point values (configured precision) to the stream.  More... | |
| template<size_t N> | |
| void | readFloatArray (Float(&values)[N]) | 
| Read a known-size array of floating point values (configured precision) to the stream.  More... | |
| void | copyTo (Stream *stream, int64_t numBytes=-1) | 
| Copy content from this stream into another stream.  More... | |
| template<typename T > | |
| T | readElement () | 
| Read an element from the stream (uses partial template specialization to select a method appropriate to the data type)  More... | |
| template<typename T > | |
| void | writeElement (T value) | 
| Write an element to the stream (uses partial template specialization to select a method appropriate to the data type)  More... | |
| template<typename T > | |
| void | readArray (T *array, size_t count) | 
| Read an array from the stream (uses partial template specialization to select a method appropriate to the data type)  More... | |
| template<typename T , size_t N> | |
| void | readArray (T(&arr)[N]) | 
| Read a known-size array from the stream (uses partial template specialization to select a method appropriate to the data type)  More... | |
| template<typename T > | |
| void | writeArray (const T *array, size_t count) | 
| Write an array to the stream (uses partial template specialization to select a method appropriate to the data type)  More... | |
| template<typename T , size_t N> | |
| void | writeArray (const T(&arr)[N]) | 
| Write a known-size array to the stream (uses partial template specialization to select a method appropriate to the data type)  More... | |
| void | setByteOrder (EByteOrder byteOrder) | 
| Set the stream byte order.  More... | |
| EByteOrder | getByteOrder () const | 
| Return the byte order of this stream.  More... | |
|  Public Member Functions inherited from Object | |
| Object () | |
| Construct a new object.  More... | |
| int | getRefCount () const | 
| Return the current reference count.  More... | |
| void | incRef () const | 
| Increase the reference count of the object by one.  More... | |
| void | decRef (bool autoDeallocate=true) const | 
| Decrease the reference count of the object and possibly deallocate it.  More... | |
| Static Public Member Functions | |
| Miscellaneous | |
| static ref< FileStream > | createTemporary () | 
| Create a temporary file and return an associated FileStream.  More... | |
| static void | staticInitialization () | 
| Initialize the file I/O layer (unicode conversions etc.)  More... | |
| static void | staticShutdown () | 
| Release resources taken up by staticInitialization()  More... | |
|  Static Public Member Functions inherited from mitsuba::Stream | |
| static EByteOrder | getHostByteOrder () | 
| Return the byte order of the underlying machine.  More... | |
|  Static Public Member Functions inherited from Object | |
| static void | staticInitialization () | 
| Initializes the built-in reference count debugger (if enabled)  More... | |
| static void | staticShutdown () | 
| Free the memory taken by staticInitialization()  More... | |
| Static Public Attributes | |
| static Class * | m_theClass | 
|  Static Public Attributes inherited from mitsuba::Stream | |
| static Class * | m_theClass | 
|  Static Public Attributes inherited from Object | |
| static Class * | m_theClass | 
| Pointer to the object's class descriptor.  More... | |
| Protected Member Functions | |
| virtual | ~FileStream () | 
| Virtual destructor.  More... | |
|  Protected Member Functions inherited from mitsuba::Stream | |
| virtual | ~Stream () | 
| Virtual destructor.  More... | |
|  Protected Member Functions inherited from Object | |
| virtual | ~Object () | 
| Virtual private deconstructor. (Will only be called by ref)  More... | |
Simple Stream implementation for accessing files.
This class uses POSIX streams on Linux and OSX and the native WIN32 API when used on Windows.
| mitsuba::FileStream::FileStream | ( | ) | 
Create a file stream class with no file open.
Create a file stream class and open a file with a given EFileMode.
| 
 | protectedvirtual | 
Virtual destructor.
The destructor frees all resources and closes the file if it is still open
| 
 | virtual | 
Can we read from the stream?
Implements mitsuba::Stream.
| 
 | virtual | 
Can we write to the stream?
Implements mitsuba::Stream.
| void mitsuba::FileStream::close | ( | ) | 
Close the current file.
| 
 | static | 
Create a temporary file and return an associated FileStream.
| 
 | virtual | 
Flush the stream's buffers.
Implements mitsuba::Stream.
| 
 | virtual | 
Retrieve this object's class.
Reimplemented from mitsuba::Stream.
| const fs::path& mitsuba::FileStream::getPath | ( | ) | const | 
Return the file path.
| 
 | virtual | 
Get the current position inside the stream.
Implements mitsuba::Stream.
| 
 | virtual | 
Return the size of the stream.
Implements mitsuba::Stream.
Open a file with a given open mode.
| 
 | virtual | 
Read a specified amount of data from the stream.
Throws an exception when the stream ended prematurely
Implements mitsuba::Stream.
| void mitsuba::FileStream::remove | ( | ) | 
Remove the current file.
| 
 | virtual | 
Seek to a position inside the stream.
Implements mitsuba::Stream.
| 
 | static | 
Initialize the file I/O layer (unicode conversions etc.)
| 
 | static | 
Release resources taken up by staticInitialization()
| 
 | virtual | 
Return a string representation.
Reimplemented from mitsuba::Stream.
| 
 | virtual | 
Truncate the stream to a given size.
Implements mitsuba::Stream.
| 
 | virtual | 
Write a specified amount of data into the stream.
Throws an exception when not all data could be written
Implements mitsuba::Stream.
| 
 | static |