Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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

NameDescription
~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()

Wrap the IGeoStream::GetPosition function.

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)

IffWriter(IGeoStream &)

Construct an IffWriter with a pre-existing IGeoStream.

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)

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.

NonCopyable(NonCopyable &&)

Defaulted to allow move.

operator=(NonCopyable &&)

Defaulted to allow move.

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.

Read(T &)

Read a single object, returning true on success.

ReadImpl(T &, GeoStd::FalseType)

Read a single object, returning true on success.

ReadImpl(T &, GeoStd::TrueType)

Read a single object, returning true on success.

ReadToEnd()

Reads the stream to its end and returns the data as a char array.

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.

SetPosition(Geo::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)

Wrap the IGeoStream::Write function, tracking the return code.

Enums

NameDescription
EStreamMode

An IGeoStream is open in either esmRead or esmWrite mode.


Anchor
acb487310292de9d06f411ecb66398c2a
acb487310292de9d06f411ecb66398c2a

Geo::IffWriter::~IffWriter

...

public: ~IffWriter()

...

Note: Does not close the underlying IGeoStream (so you can write multiple Iff files to one IGeoStream)


Anchor
ae01b40e7a8901409e456597b1c47ae68
ae01b40e7a8901409e456597b1c47ae68

virtual Geo::IGeoInputStream::~IGeoInputStream

...

public: virtual ~IGeoInputStream()

...

Deleting a stream should behave like a close operation.


Anchor
a7b80fec277336d2b47557a18f584fc22
a7b80fec277336d2b47557a18f584fc22

virtual Geo::IGeoStream::~IGeoStream

...

public: virtual ~IGeoStream()

...

Deleting a stream should behave like a close operation.


Anchor
ae28389c63f775913342f202f282c5fb9
ae28389c63f775913342f202f282c5fb9

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
ac27d71f9893720dab35788b9c7abbb9e
ac27d71f9893720dab35788b9c7abbb9e

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
a9896a7876fc70989f72d6bd7f6498c50
a9896a7876fc70989f72d6bd7f6498c50

virtual u32 Geo::IGeoStream::BeginType

...

public: virtual u32 BeginType
(
    TypeId type,
    u32 count
)

...

Provide information about the typed data written to the stream.


Anchor
af7de3dbff6ca8b7883b99425cfd5e3d9
af7de3dbff6ca8b7883b99425cfd5e3d9

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
a04b86ae14d8f397183ef1405f4036ab8
a04b86ae14d8f397183ef1405f4036ab8

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
a95285795a88399f8cef771c68d78bf81
a95285795a88399f8cef771c68d78bf81

virtual void Geo::IGeoStream::EndType

...

public: virtual void EndType
(
    u32 index
)

...

Provide information about the typed data written to the stream.


Anchor
a61a038861d34596e19f19ebf2eeff5ca
a61a038861d34596e19f19ebf2eeff5ca

void Geo::IffWriter::Fail

...

public: void Fail()

...

Put the writer directly into a fail state.


Anchor
a264d4e3479a66c7be9c0b65a217f4be5
a264d4e3479a66c7be9c0b65a217f4be5

virtual u64 Geo::IffWriter::GetPosition

...

public: virtual u64 GetPosition() const

...

Wrap the IGeoStream::GetPosition function.


Anchor
abb2da2774c474f504e4e483e96437b75
abb2da2774c474f504e4e483e96437b75

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
a0b27c87c49e46548e24ec7337fb2a00d
a0b27c87c49e46548e24ec7337fb2a00d

virtual u64 Geo::IGeoStream::GetPosition

...

public: u64 GetPosition() const

...

Return the position of the read/write pointer within the stream (prototype matches ftell)


Anchor
aac2f7ad7719cc2377b9516d8bd4a3af0
aac2f7ad7719cc2377b9516d8bd4a3af0

Geo::IffWriter::IffWriter

...

public: IffWriter
(
    IGeoStream & stream
)

...

Construct an IffWriter with a pre-existing IGeoStream.


Anchor
a1d5d6429a25d9275e1b77c2390222f73
a1d5d6429a25d9275e1b77c2390222f73

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
a9f7dc8618a046868907eb5a35f313a30
a9f7dc8618a046868907eb5a35f313a30

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
a6578606b37bd75792945fb0b355b00c7
a6578606b37bd75792945fb0b355b00c7

virtual bool Geo::IffWriter::IsEof

...

public: virtual bool IsEof() const

...

Wrap the IGeoStream::IsEof function (not expected to be used)


Anchor
a2b7274441a0649847a8850974f0c4b30
a2b7274441a0649847a8850974f0c4b30

virtual bool Geo::IGeoStream::IsOk

...

public: bool IsOk() const

...

Tests if the stream is valid.


Anchor
a1ffb27baedd5eab9e075389fd4a45263
a1ffb27baedd5eab9e075389fd4a45263

virtual bool Geo::IGeoInputStream::IsOk

...

public: bool IsOk() const

...

Tests if the stream is valid.


Anchor
a65b9e76ee17b12d1fc1dca4c3f37c050
a65b9e76ee17b12d1fc1dca4c3f37c050

virtual bool Geo::IffWriter::IsOk

...

public: virtual bool IsOk() const

...

Wrap the IGeoStream::IsOk function, returning status of the IffWriter also.


Anchor
aceb5d02d95f3e9f73c6dec22cf00c171
aceb5d02d95f3e9f73c6dec22cf00c171

bool Geo::IffWriter::IsWriterOk

...

public: bool IsWriterOk() const

...

Return status of the writer.

Deprecated

Prefer to use the IGeoStream::IsOk() method


Anchor
adaed81b4c59f263dcb4e78c4126f4683
adaed81b4c59f263dcb4e78c4126f4683

Geo::NonCopyable::NonCopyable

...

public: NonCopyable
(
    NonCopyable &&
)

...

Defaulted to allow move.


Anchor
a6abc781e23b8f4864e0b868806e0acbf
a6abc781e23b8f4864e0b868806e0acbf

NonCopyable& Geo::NonCopyable::operator=

...

public: NonCopyable & operator=
(
    NonCopyable &&
)

...

Defaulted to allow move.


Anchor
a8873e5418d057d093fbdd0c69cc383f2
a8873e5418d057d093fbdd0c69cc383f2

bool Geo::IGeoInputStream::Read

...

public: bool Read
(
    T(&) a
)

...

Read a fixed size array.


Anchor
a3cc41022fb66c5e01f01b60a2c713dc5
a3cc41022fb66c5e01f01b60a2c713dc5

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
a7564a03e0ebbee028920a1770ccc5cdd
a7564a03e0ebbee028920a1770ccc5cdd

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
a2bdc1ec2ed234832370c8e5f1dcc923c
a2bdc1ec2ed234832370c8e5f1dcc923c

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
aa299ffca66c6b0cf5a4cdeedcebf4cf4
aa299ffca66c6b0cf5a4cdeedcebf4cf4

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
a85890dac322ac71c33ec6049ff351000
a85890dac322ac71c33ec6049ff351000

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
a95aa1b762401c201b68c020cb20a0e34
a95aa1b762401c201b68c020cb20a0e34

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
ad1748f884ed4358b4b42d8c8fc7b3fb7
ad1748f884ed4358b4b42d8c8fc7b3fb7

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
aa575f6a9cf81f0d62e6a90a97398f621
aa575f6a9cf81f0d62e6a90a97398f621

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
a2bfb9e9fd65d93141891709e835f6ac3
a2bfb9e9fd65d93141891709e835f6ac3

virtual bool Geo::IffWriter::SetPosition

...

public: virtual bool SetPosition
(
    u64 pos
)

...

Wrap the IGeoStream::SetPosition function, be careful when jumping around inside IffWriter.


Anchor
aaedb05f09c0b2f105e77388160aa9541
aaedb05f09c0b2f105e77388160aa9541

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
aa99c0ecdb48edabd6805fb919bd2869e
aa99c0ecdb48edabd6805fb919bd2869e

bool Geo::IGeoStream::Write

...

public: bool Write
(
    const T(&) a
)

...

Write a fixed size array.


Anchor
a0424d7821babe67cfda6f9e80660973a
a0424d7821babe67cfda6f9e80660973a

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
aa25cf8f181c9e97fefa181efffe2c78e
aa25cf8f181c9e97fefa181efffe2c78e

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
a6187ed152803683bfaa674529e24c14d
a6187ed152803683bfaa674529e24c14d

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
a7edb5adcd231dcaf585a412490668372
a7edb5adcd231dcaf585a412490668372

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
aca99519cabcaf23c8e72eaf4c8b512c6
aca99519cabcaf23c8e72eaf4c8b512c6

EStreamMode

...

public: enum EStreamMode
{
    esmWrite,
    esmRead
}

...

An IGeoStream is open in either esmRead or esmWrite mode.

enumerators
esmWrite
esmRead