class Geo::IffWriter
└>Geo::IGeoStream
└>Geo::IGeoInputStream
An IffWriter allows you to use an IGeoStream to create Iff format binary files easily.
It is passed an IGeoStream in its constructor and also implements IGeoStream, thus making it like an Adaptor pattern. Although the class uses the terms 'BeginFile' and 'EndFile' the underlying stream can be of any type.
Functions
Name | Description |
---|---|
~IffWriter() | Note: Does not close the underlying IGeoStream (so you can write multiple Iff files to one IGeoStream) |
~IGeoInputStream() | Deleting a stream should behave like a close operation. |
~IGeoStream() | Deleting a stream should behave like a close operation. |
BeginChunk(u32) | Begin a new Iff chunk. |
BeginFile(u32, s32) | Write the Iff preamble and leave space to go back and fill in block data sizes, etc. |
BeginType(TypeId, u32) | Provide information about the typed data written to the stream. |
EndChunk() | Close the most recent chunk (note that the position of the stream when this is called determines the size of the chunk, be careful when jumping around inside IffWriter not to leave your current chunk) |
EndFile() | Close all open chunks, going back and filling in the chunk sizes before this point. |
EndType(u32) | Provide information about the typed data written to the stream. |
Fail() | Put the writer directly into a fail state. |
GetPosition() | Return the position of the read/write pointer within the stream (prototype matches ftell) |
GetPosition() | Wrap the IGeoStream::GetPosition function. |
GetPosition() | Return the position of the read/write pointer within the stream (prototype matches ftell) |
IffWriter(IGeoStream &) | Construct an IffWriter with a pre-existing IGeoStream. |
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() | Wrap the IGeoStream::IsEof function (not expected to be used) |
IsOk() | Tests if the stream is valid. |
IsOk() | Tests if the stream is valid. |
IsOk() | Wrap the IGeoStream::IsOk function, returning status of the IffWriter also. |
IsWriterOk() | Return status of the writer. |
Read(T &) | Read a single object, returning true on success. |
Read(T(&)) | Read a fixed size array. |
Read(void *, size_t, size_t) | Wrap the IGeoStream::Read function, making it invalid. |
Read(TIter, TIter) | Read a collection of objects, returning true on success. |
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) | Wrap the IGeoStream::SetPosition function, be careful when jumping around inside IffWriter. |
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 void *, size_t, size_t) | Wrap the IGeoStream::Write function, tracking the return code. |
Write(const T &) | Write a single object, returning true on success. |
Enums
Name | Description |
---|---|
EStreamMode | An IGeoStream is open in either esmRead or esmWrite mode. |
Anchor | ||||
---|---|---|---|---|
|
Geo::IffWriter::~IffWriter
...
public: ~IffWriter()
...
Note: Does not close the underlying IGeoStream (so you can write multiple Iff files to one IGeoStream)
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 | ||||
---|---|---|---|---|
|
bool Geo::IffWriter::BeginChunk
...
public: bool BeginChunk
(
u32 type
)
...
Begin a new Iff chunk.
These are used to allow selective loading (and to skip data that is not expected)
Anchor | ||||
---|---|---|---|---|
|
bool Geo::IffWriter::BeginFile
...
public: bool BeginFile
(
u32 fileType,
s32 fileVersion
)
...
Write the Iff preamble and leave space to go back and fill in block data sizes, etc.
You are encouraged to make the Iff tag public and somewhere that other code can access.
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::IffWriter::EndChunk
...
public: bool EndChunk()
...
Close the most recent chunk (note that the position of the stream when this is called determines the size of the chunk, be careful when jumping around inside IffWriter not to leave your current chunk)
Anchor | ||||
---|---|---|---|---|
|
bool Geo::IffWriter::EndFile
...
public: bool EndFile()
...
Close all open chunks, going back and filling in the chunk sizes before this point.
Does not close the underlying IGeoStream.
Anchor | ||||
---|---|---|---|---|
|
virtual void Geo::IGeoStream::EndType
...
public: virtual void EndType
(
u32 index
)
...
Provide information about the typed data written to the stream.
Anchor | ||||
---|---|---|---|---|
|
void Geo::IffWriter::Fail
...
public: void Fail()
...
Put the writer directly into a fail state.
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 | ||||
---|---|---|---|---|
|
virtual u64 Geo::IffWriter::GetPosition
...
public: virtual u64 GetPosition() const
...
Wrap the IGeoStream::GetPosition function.
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 | ||||
---|---|---|---|---|
|
Geo::IffWriter::IffWriter
...
public: IffWriter
(
IGeoStream & stream
)
...
Construct an IffWriter with a pre-existing IGeoStream.
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::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::IffWriter::IsEof
...
public: virtual bool IsEof() const
...
Wrap the IGeoStream::IsEof function (not expected to be used)
Anchor | ||||
---|---|---|---|---|
|
virtual bool Geo::IGeoStream::IsOk
...
public: bool IsOk() const
...
Tests if the stream is valid.
Anchor | ||||
---|---|---|---|---|
|
virtual bool Geo::IGeoInputStream::IsOk
...
public: bool IsOk() const
...
Tests if the stream is valid.
Anchor | ||||
---|---|---|---|---|
|
virtual bool Geo::IffWriter::IsOk
...
public: virtual bool IsOk() const
...
Wrap the IGeoStream::IsOk function, returning status of the IffWriter also.
Anchor | ||||
---|---|---|---|---|
|
bool Geo::IffWriter::IsWriterOk
...
public: bool IsWriterOk() const
...
Return status of the writer.
Deprecated
Prefer to use the IGeoStream::IsOk() method
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 | ||||
---|---|---|---|---|
|
bool Geo::IGeoInputStream::Read
...
public: bool Read
(
T(&) a
)
...
Read a fixed size array.
Anchor | ||||
---|---|---|---|---|
|
virtual size_t Geo::IffWriter::Read
...
public: virtual size_t Read
(
void * pData,
size_t size,
size_t count
)
...
Wrap the IGeoStream::Read function, making it invalid.
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 | ||||
---|---|---|---|---|
|
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 | ||||
---|---|---|---|---|
|
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 | ||||
---|---|---|---|---|
|
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 | ||||
---|---|---|---|---|
|
virtual bool Geo::IffWriter::SetPosition
...
public: virtual bool SetPosition
(
u64 pos
)
...
Wrap the IGeoStream::SetPosition function, be careful when jumping around inside IffWriter.
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 | ||||
---|---|---|---|---|
|
virtual size_t Geo::IffWriter::Write
...
public: virtual size_t Write
(
const void * pData,
size_t size,
size_t count
)
...
Wrap the IGeoStream::Write function, tracking the return code.
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 | ||||
---|---|---|---|---|
|
EStreamMode
...
public: enum EStreamMode
{
esmWrite,
esmRead
}
...
An IGeoStream is open in either esmRead or esmWrite mode.
enumerators
esmWrite | |
esmRead |