class Geo::GeoZLibFileStream
└>Geo::IGeoStream
└>Geo::IGeoInputStream
IGeoStream implementation that saves/loads data from a zlib compressed file.
Since we need the ability to seek backwards within a stream, we have to make an in-memory copy first and then upon close, push this to the disk. If reading, expand whole file, then read what we need. Note that the class will happily open files that were not compressed, and not complain. As a result, you can load a file saved with either GeoZLibFileStream or GeoFileStream using this class.
Functions
Name | Description |
---|---|
~GeoZLibFileStream() | Closes current file, if open. |
~IGeoInputStream() | Deleting a stream should behave like a close operation. |
~IGeoStream() | Deleting a stream should behave like a close operation. |
BeginType(TypeId, u32) | Provide information about the typed data written to the stream. |
Close() | Close current file, if any. |
EndType(u32) | Provide information about the typed data written to the stream. |
GeoZLibFileStream() | Create with no attached file. |
GetFilename() | Return the filename with which this stream was opened (not available if created with FILE*) |
GetPosition() | Return the position of the read/write pointer within the stream (prototype matches ftell) |
GetPosition() | Return the position of the read/write pointer within the stream (prototype matches ftell) |
GetPosition() | Return the position of the read/write pointer within the stream (prototype matches ftell) |
IsEof() | Is the read/write pointer at the end of the file (as with feof, only returns true if you have read past end) |
IsEof() | Is the read pointer at the end of the file (as with feof, only returns true if you have read past end) |
IsEof() | Is the read/write pointer at the end of the file (as with feof, only returns true if you have read past end) |
IsOk() | Tests if the stream is valid. |
IsOk() | Tests if the stream is valid. |
IsOk() | Tests if the stream is valid. |
NonCopyable(NonCopyable &&) | Defaulted to allow move. |
Open(char const *, EStreamMode) | Close current file, if any, and open filename. |
operator=(NonCopyable &&) | Defaulted to allow move. |
Read(T(&)) | Read a fixed size array. |
Read(TIter, TIter) | Read a collection of objects, returning true on success. |
Read(T &) | Read a single object, returning true on success. |
Read(void *, size_t, size_t) | Read data (prototype matches fread). Prefer to use the templated Read methods. |
Read(void *, size_t, size_t) | Read data (prototype matches fread). Prefer to use the templated Read methods. |
ReadImpl(T &, GeoStd::TrueType) | Read a single object, returning true on success. |
ReadImpl(T &, GeoStd::FalseType) | Read a single object, returning true on success. |
ReadToEnd() | Reads the stream to its end and returns the data as a char array. |
SetPosition(Geo::u64) | Set the position of the read/write pointer within the stream (prototype matches fseek) |
SetPosition(u64) | Set the position of the read/write pointer within the stream (prototype matches fseek) |
SetPosition(u64) | Set the position of the read/write pointer within the stream (prototype matches fseek) |
Write(const T(&)) | Write a fixed size array. |
Write(TIter, TIter) | Write a collection of objects, in range [begin, end) as STL-style classes support. |
Write(const void *, size_t, size_t) | Write data (prototype matches fwrite). Prefer to use the templated Write methods. |
Write(const T &) | Write a single object, returning true on success. |
Write(const void *, size_t, size_t) | Write data (prototype matches fwrite). Prefer to use the templated Write methods. |
Enums
Name | Description |
---|---|
EStreamMode | An IGeoStream is open in either esmRead or esmWrite mode. |
Anchor | ||||
---|---|---|---|---|
|
Geo::GeoZLibFileStream::~GeoZLibFileStream
...
public: ~GeoZLibFileStream()
...
Closes current file, if open.
Anchor | ||||
---|---|---|---|---|
|
virtual Geo::IGeoInputStream::~IGeoInputStream
...
public: virtual ~IGeoInputStream()
...
Deleting a stream should behave like a close operation.
Anchor | ||||
---|---|---|---|---|
|
virtual Geo::IGeoStream::~IGeoStream
...
public: virtual ~IGeoStream()
...
Deleting a stream should behave like a close operation.
Anchor | ||||
---|---|---|---|---|
|
virtual u32 Geo::IGeoStream::BeginType
...
public: virtual u32 BeginType
(
TypeId type,
u32 count
)
...
Provide information about the typed data written to the stream.
Anchor | ||||
---|---|---|---|---|
|
bool Geo::GeoZLibFileStream::Close
...
public: bool Close()
...
Close current file, if any.
Anchor | ||||
---|---|---|---|---|
|
virtual void Geo::IGeoStream::EndType
...
public: virtual void EndType
(
u32 index
)
...
Provide information about the typed data written to the stream.
Anchor | ||||
---|---|---|---|---|
|
Geo::GeoZLibFileStream::GeoZLibFileStream
...
public: GeoZLibFileStream()
...
Create with no attached file.
Anchor | ||||
---|---|---|---|---|
|
const char * Geo::GeoZLibFileStream::GetFilename
...
public: const char * GetFilename() const
...
Return the filename with which this stream was opened (not available if created with FILE*)
Anchor | ||||
---|---|---|---|---|
|
u64 Geo::GeoZLibFileStream::GetPosition
...
public: virtual u64 GetPosition() const
...
Return the position of the read/write pointer within the stream (prototype matches ftell)
Anchor | ||||
---|---|---|---|---|
|
virtual Geo::u64 Geo::IGeoInputStream::GetPosition
...
public: Geo::u64 GetPosition() const
...
Return the position of the read/write pointer within the stream (prototype matches ftell)
Anchor | ||||
---|---|---|---|---|
|
virtual u64 Geo::IGeoStream::GetPosition
...
public: u64 GetPosition() const
...
Return the position of the read/write pointer within the stream (prototype matches ftell)
Anchor | ||||
---|---|---|---|---|
|
bool Geo::GeoZLibFileStream::IsEof
...
public: virtual bool IsEof() const
...
Is the read/write pointer at the end of the file (as with feof, only returns true if you have read past end)
Anchor | ||||
---|---|---|---|---|
|
virtual bool Geo::IGeoInputStream::IsEof
...
public: bool IsEof() const
...
Is the read pointer at the end of the file (as with feof, only returns true if you have read past end)
Anchor | ||||
---|---|---|---|---|
|
virtual bool Geo::IGeoStream::IsEof
...
public: bool IsEof() const
...
Is the read/write pointer at the end of the file (as with feof, only returns true if you have read past end)
Anchor | ||||
---|---|---|---|---|
|
virtual bool Geo::IGeoInputStream::IsOk
...
public: bool IsOk() const
...
Tests if the stream is valid.
Anchor | ||||
---|---|---|---|---|
|
virtual bool Geo::IGeoStream::IsOk
...
public: bool IsOk() const
...
Tests if the stream is valid.
Anchor | ||||
---|---|---|---|---|
|
bool Geo::GeoZLibFileStream::IsOk
...
public: virtual bool IsOk() const
...
Tests if the stream is valid.
Anchor | ||||
---|---|---|---|---|
|
Geo::NonCopyable::NonCopyable
...
public: NonCopyable
(
NonCopyable &&
)
...
Defaulted to allow move.
Anchor | ||||
---|---|---|---|---|
|
bool Geo::GeoZLibFileStream::Open
...
public: bool Open
(
char const * filename,
EStreamMode mode
)
...
Close current file, if any, and open filename.
Anchor | ||||
---|---|---|---|---|
|
NonCopyable& Geo::NonCopyable::operator=
...
public: NonCopyable & operator=
(
NonCopyable &&
)
...
Defaulted to allow move.
Anchor | ||||
---|---|---|---|---|
|
bool Geo::IGeoInputStream::Read
...
public: bool Read
(
T(&) a
)
...
Read a fixed size array.
Anchor | ||||
---|---|---|---|---|
|
bool Geo::IGeoInputStream::Read
...
public: bool Read
(
TIter begin,
TIter end
)
...
Read a collection of objects, returning true on success.
Object must be considered blittable (see IsBlittable<T>). Note that the storage must have been pre-allocated as it will write directly to the iterators provided. Given that we do not have the STL-style 'back-inserter' classes, for GeoArrays you should use the ReadArray helper function.
Anchor | ||||
---|---|---|---|---|
|
GEO_FORCE_INLINE bool Geo::IGeoInputStream::Read
...
public: GEO_FORCE_INLINE bool Read
(
T & object
)
...
Read a single object, returning true on success.
There must either be a ReadObject overload for T, or T be considered blittable (see IsBlittable<T>).
Anchor | ||||
---|---|---|---|---|
|
virtual size_t Geo::IGeoInputStream::Read
...
public: size_t Read
(
void * pData,
size_t size,
size_t count
)
...
Read data (prototype matches fread). Prefer to use the templated Read methods.
Anchor | ||||
---|---|---|---|---|
|
size_t Geo::GeoZLibFileStream::Read
...
public: virtual size_t Read
(
void * pData,
size_t size,
size_t count
)
...
Read data (prototype matches fread). Prefer to use the templated Read methods.
Anchor | ||||
---|---|---|---|---|
|
bool Geo::IGeoInputStream::ReadImpl
...
public: bool ReadImpl
(
T & object,
GeoStd::TrueType
)
...
Read a single object, returning true on success.
There must either be a ReadObject overload for T, or T be considered blittable (see IsBlittable<T>).
Anchor | ||||
---|---|---|---|---|
|
bool Geo::IGeoInputStream::ReadImpl
...
public: bool ReadImpl
(
T & object,
GeoStd::FalseType
)
...
Read a single object, returning true on success.
There must either be a ReadObject overload for T, or T be considered blittable (see IsBlittable<T>).
Anchor | ||||
---|---|---|---|---|
|
virtual Geo::GeoArray<char> Geo::IGeoInputStream::ReadToEnd
...
public: virtual Geo::GeoArray< char > ReadToEnd()
...
Reads the stream to its end and returns the data as a char array.
Anchor | ||||
---|---|---|---|---|
|
virtual bool Geo::IGeoInputStream::SetPosition
...
public: bool SetPosition
(
Geo::u64 pos
)
...
Set the position of the read/write pointer within the stream (prototype matches fseek)
Anchor | ||||
---|---|---|---|---|
|
bool Geo::GeoZLibFileStream::SetPosition
...
public: virtual bool SetPosition
(
u64 pos
)
...
Set the position of the read/write pointer within the stream (prototype matches fseek)
Anchor | ||||
---|---|---|---|---|
|
virtual bool Geo::IGeoStream::SetPosition
...
public: bool SetPosition
(
u64 pos
)
...
Set the position of the read/write pointer within the stream (prototype matches fseek)
Anchor | ||||
---|---|---|---|---|
|
bool Geo::IGeoStream::Write
...
public: bool Write
(
const T(&) a
)
...
Write a fixed size array.
Anchor | ||||
---|---|---|---|---|
|
bool Geo::IGeoStream::Write
...
public: bool Write
(
TIter begin,
TIter end
)
...
Write a collection of objects, in range [begin, end) as STL-style classes support.
Objects have same requirements single object Write (see IsBlittable<T>).
Anchor | ||||
---|---|---|---|---|
|
virtual size_t Geo::IGeoStream::Write
...
public: size_t Write
(
const void * pData,
size_t size,
size_t count
)
...
Write data (prototype matches fwrite). Prefer to use the templated Write methods.
Anchor | ||||
---|---|---|---|---|
|
GEO_FORCE_INLINE bool Geo::IGeoStream::Write
...
public: GEO_FORCE_INLINE bool Write
(
const T & object
)
...
Write a single object, returning true on success.
There must either be a WriteObject overload for T, or T must be blittable (see IsBlittable<T>).
Anchor | ||||
---|---|---|---|---|
|
size_t Geo::GeoZLibFileStream::Write
...
public: virtual size_t Write
(
const void * pData,
size_t size,
size_t count
)
...
Write data (prototype matches fwrite). Prefer to use the templated Write methods.
Anchor | ||||
---|---|---|---|---|
|
EStreamMode
...
public: enum EStreamMode
{
esmWrite,
esmRead
}
...
An IGeoStream is open in either esmRead or esmWrite mode.
enumerators
esmWrite | |
esmRead |