Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

WvFunctorEncoder< IT, OT, FT > Class Template Reference

#include <wvfunctorencoder.h>

Inherits WvTypedEncoder< IT, OT >.

Collaboration diagram for WvFunctorEncoder< IT, OT, FT >:

[legend]
List of all members.

Detailed Description

template<class IT, class OT, class FT>
class WvFunctorEncoder< IT, OT, FT >

Functor specifies the functor type which must have an operator() with a signature compatible with invocations of the form: const IT data = ...; OT result = func(data);.

The best way to use this monster is to subclass with friendly names for the implementations that are needed. For maximum performance, define the functor as a struct that provides an operator() inline. This is extremely efficent since this class is templated, so there's room for lots of compiler optimization.

"IT" is the input buffer datatype "OT" is the output buffer datatype "FT" is the functor type

Definition at line 31 of file wvfunctorencoder.h.

Public Types

typedef FT FType
typedef IT IType
typedef OT OType
typedef WvBufBase< ITypeIBuffer
typedef WvBufBase< OTypeOBuffer
typedef WvBufViewBase< ITypeIBufferView
typedef WvBufViewBase< OTypeOBufferView

Public Member Functions

 WvFunctorEncoder (const FType &f)
virtual ~WvFunctorEncoder ()
bool encode (IBuffer &inbuf, OBuffer &outbuf, bool flush=false, bool finish=false)
 Typed variant of encode().

bool encode (WvBuf &inbuf, WvBuf &outbuf, bool flush=false, bool finish=false)
 Reads data from the input buffer, encodes it, and writes the result to the output buffer.

bool flush (IBuffer &inbuf, OBuffer &outbuf, bool finish=false)
 Typed variant of flush().

bool flush (WvBuf &inbuf, WvBuf &outbuf, bool finish=false)
 Flushes the encoder and optionally finishes it.

bool finish (OBuffer &outbuf)
 Typed variant of finish().

bool finish (WvBuf &outbuf)
 Tells the encoder that NO MORE DATA will ever be encoded.

bool isok () const
 Returns true if the encoder has not encountered an error.

bool isfinished () const
 Returns true if the encoder can no longer encode data.

WvString geterror () const
 Returns an error message if any is available.

bool reset ()
 Asks an encoder to reset itself to its initial state at creation time, if supported.

bool flushstrbuf (WvStringParm instr, WvBuf &outbuf, bool finish=false)
 Flushes data through the encoder from a string to a buffer.

bool flushstrstr (WvStringParm instr, WvString &outstr, bool finish=false)
 Flushes data through the encoder from a string to a string.

bool encodebufstr (WvBuf &inbuf, WvString &outstr, bool flush=false, bool finish=false)
 Encodes data from a buffer to a string.

bool flushbufstr (WvBuf &inbuf, WvString &outstr, bool finish=false)
 Flushes data through the encoder from a buffer to a string.

WvString strflushstr (WvStringParm instr, bool finish=false)
 Flushes data through the encoder from a string to a string.

WvString strflushbuf (WvBuf &inbuf, bool finish=false)
 Flushes data through the encoder from a buffer to a string.

bool flushmembuf (const void *inmem, size_t inlen, WvBuf &outbuf, bool finish=false)
 Flushes data through the encoder from memory to a buffer.

bool flushmemmem (const void *inmem, size_t inlen, void *outmem, size_t *outlen, bool finish=false)
 Flushes data through the encoder from memory to memory.

bool encodebufmem (WvBuf &inbuf, void *outmem, size_t *outlen, bool flush=false, bool finish=false)
 Encodes data from a buffer to memory.

bool flushbufmem (WvBuf &inbuf, void *outmem, size_t *outlen, bool finish=false)
 Flushes data through the encoder from a buffer to memory.

bool flushstrmem (WvStringParm instr, void *outmem, size_t *outlen, bool finish=false)
 Flushes data through the encoder from a string to memory.

WvString strflushmem (const void *inmem, size_t inlen, bool finish=false)
 Flushes data through the encoder from memory to a string.


Protected Member Functions

virtual bool _typedencode (IBuffer &inbuf, OBuffer &outbuf, bool flush)
 Typed variant of _encode().

virtual bool _reset ()
 Template method implementation of reset().

virtual bool _typedfinish (OBuffer &outbuf)
 Typed variant of _finish().

virtual bool _encode (WvBuf &inbuf, WvBuf &outbuf, bool flush)
 Wrapper implementation of _encode().

virtual bool _finish (WvBuf &outbuf)
 Wrapper implementation of _finish().

void setnotok ()
 Sets 'okay' to false explicitly.

void seterror (WvStringParm message)
 Sets an error condition, then setnotok().

void seterror (WVSTRING_FORMAT_DECL)
 Sets an error condition, then setnotok().

void setfinished ()
 Sets 'finished' to true explicitly.

virtual bool _isok () const
 Template method implementation of isok().

virtual bool _isfinished () const
 Template method implementation of isfinished().

virtual WvString _geterror () const
 Template method implementation of geterror().


Protected Attributes

FT f
bool okay
bool finished
WvString errstr


Member Typedef Documentation

template<class IT, class OT, class FT>
typedef FT WvFunctorEncoder< IT, OT, FT >::FType
 

Definition at line 37 of file wvfunctorencoder.h.

template<class IT, class OT, class FT>
typedef WvBufBase<IType> WvFunctorEncoder< IT, OT, FT >::IBuffer
 

Reimplemented from WvTypedEncoder< IT, OT >.

Definition at line 40 of file wvfunctorencoder.h.

typedef WvBufViewBase<IType> WvTypedEncoder< IT , OT , WvEncoder >::IBufferView [inherited]
 

Definition at line 40 of file wvtypedencoder.h.

template<class IT, class OT, class FT>
typedef IT WvFunctorEncoder< IT, OT, FT >::IType
 

Reimplemented from WvTypedEncoder< IT, OT >.

Definition at line 38 of file wvfunctorencoder.h.

template<class IT, class OT, class FT>
typedef WvBufBase<OType> WvFunctorEncoder< IT, OT, FT >::OBuffer
 

Reimplemented from WvTypedEncoder< IT, OT >.

Definition at line 41 of file wvfunctorencoder.h.

typedef WvBufViewBase<OType> WvTypedEncoder< IT , OT , WvEncoder >::OBufferView [inherited]
 

Definition at line 41 of file wvtypedencoder.h.

template<class IT, class OT, class FT>
typedef OT WvFunctorEncoder< IT, OT, FT >::OType
 

Reimplemented from WvTypedEncoder< IT, OT >.

Definition at line 39 of file wvfunctorencoder.h.


Constructor & Destructor Documentation

template<class IT, class OT, class FT>
WvFunctorEncoder< IT, OT, FT >::WvFunctorEncoder const FType f  )  [inline]
 

Definition at line 42 of file wvfunctorencoder.h.

template<class IT, class OT, class FT>
virtual WvFunctorEncoder< IT, OT, FT >::~WvFunctorEncoder  )  [inline, virtual]
 

Definition at line 43 of file wvfunctorencoder.h.


Member Function Documentation

virtual bool WvTypedEncoder< IT , OT , WvEncoder >::_encode WvBuf inbuf,
WvBuf outbuf,
bool  flush
[inline, protected, virtual, inherited]
 

Wrapper implementation of _encode().

Implements WvEncoder.

Definition at line 107 of file wvtypedencoder.h.

References WvTypedEncoder< IT, OT, S >::_typedencode(), and WvBuf.

virtual bool WvTypedEncoder< IT , OT , WvEncoder >::_finish WvBuf outbuf  )  [inline, protected, virtual, inherited]
 

Wrapper implementation of _finish().

Reimplemented from WvEncoder.

Definition at line 116 of file wvtypedencoder.h.

References WvTypedEncoder< IT, OT, S >::_typedfinish(), and WvBuf.

virtual WvString WvEncoder::_geterror  )  const [inline, protected, virtual, inherited]
 

Template method implementation of geterror().

Not called if any of the following cases are true:

  • isok() == true
  • errstr is not null

Most implementations do not need to override this.

Returns: the error message, or the null string if _isok() == true

See also:
seterror

Reimplemented in WvEncoderChain, WvOggSpeexEncoder, and WvOggSpeexDecoder.

Definition at line 433 of file wvencoder.h.

Referenced by WvEncoder::geterror().

virtual bool WvEncoder::_isfinished  )  const [inline, protected, virtual, inherited]
 

Template method implementation of isfinished().

Not called if any of the following cases are true:

  • finished == true

Most implementations do not need to override this.

Returns: true if the encoder is finished

See also:
setfinished

Reimplemented in WvEncoderChain.

Definition at line 416 of file wvencoder.h.

Referenced by WvEncoder::isfinished().

virtual bool WvEncoder::_isok  )  const [inline, protected, virtual, inherited]
 

Template method implementation of isok().

Not called if any of the following cases are true:

  • okay == false

Most implementations do not need to override this.

Returns: true if the encoder is ok

See also:
setnotok

Reimplemented in WvEncoderChain, WvOggSpeexEncoder, and WvOggSpeexDecoder.

Definition at line 400 of file wvencoder.h.

Referenced by WvEncoder::isok().

template<class IT, class OT, class FT>
virtual bool WvFunctorEncoder< IT, OT, FT >::_reset  )  [inline, protected, virtual]
 

Template method implementation of reset().

When this method is invoked, the current local state will be okay == true and finished == false. If false is returned, then okay will be set to false.

May set a detailed error message if an error occurs.

Returns: true on success, false on error or if not supported

See also:
reset

Reimplemented from WvEncoder.

Definition at line 64 of file wvfunctorencoder.h.

template<class IT, class OT, class FT>
virtual bool WvFunctorEncoder< IT, OT, FT >::_typedencode IBuffer inbuf,
OBuffer outbuf,
bool  flush
[inline, protected, virtual]
 

Typed variant of _encode().

See also:
_encode(WvBuf&, WvBuf&, bool)

Implements WvTypedEncoder< IT, OT >.

Definition at line 46 of file wvfunctorencoder.h.

virtual bool WvTypedEncoder< IT , OT , WvEncoder >::_typedfinish OBuffer outbuf  )  [inline, protected, virtual, inherited]
 

Typed variant of _finish().

See also:
_finish(WvBuf&)

Definition at line 103 of file wvtypedencoder.h.

bool WvTypedEncoder< IT , OT , WvEncoder >::encode WvBuf inbuf,
WvBuf outbuf,
bool  flush = false,
bool  finish = false
[inline, inherited]
 

Reimplemented from WvEncoder.

Definition at line 76 of file wvtypedencoder.h.

References WvBuf.

bool WvTypedEncoder< IT , OT , WvEncoder >::encode IBuffer inbuf,
OBuffer outbuf,
bool  flush = false,
bool  finish = false
[inline, inherited]
 

Typed variant of encode().

See also:
encode(WvBuf&, WvBuf&, bool, bool)

Definition at line 47 of file wvtypedencoder.h.

References WvBufView.

bool WvEncoder::encodebufmem WvBuf inbuf,
void *  outmem,
size_t *  outlen,
bool  flush = false,
bool  finish = false
[inherited]
 

Encodes data from a buffer to memory.

The outlen parameter specifies by reference the length of the output buffer. It is updated in place to reflect the number of bytes copied to the output buffer. If the buffer was too small to hold the data, the overflow bytes will be discarded and false will be returned.

"inmem" is the input data pointer "inlen" is the input data length "outmem" is the output data pointer "outlen" is the output data length, by reference "flush" is if true, flushes the encoder "finish" is if true, calls finish() on success Returns: true on success

Definition at line 138 of file wvencoder.cc.

References WvEncoder::encode(), WvBufBaseCommonImpl< unsigned >::used(), and WvBuf.

Referenced by WvEncoder::flushbufmem(), and WvEncoder::flushmemmem().

bool WvEncoder::encodebufstr WvBuf inbuf,
WvString outstr,
bool  flush = false,
bool  finish = false
[inherited]
 

Encodes data from a buffer to a string.

The output data is appended to the target string.

"inbuf" is the input buffer "outstr" is the output string "flush" is if true, flushes the encoder "finish" is if true, calls finish() on success Returns: true on success

Definition at line 95 of file wvencoder.cc.

References WvString::append(), WvEncoder::encode(), WvBuf, and WvDynBuf.

Referenced by WvEncoder::flushbufstr().

bool WvTypedEncoder< IT , OT , WvEncoder >::finish WvBuf outbuf  )  [inline, inherited]
 

Reimplemented from WvEncoder.

Definition at line 86 of file wvtypedencoder.h.

References WvBuf.

bool WvTypedEncoder< IT , OT , WvEncoder >::finish OBuffer outbuf  )  [inline, inherited]
 

Typed variant of finish().

See also:
finish(WvBuf)

Definition at line 70 of file wvtypedencoder.h.

References WvBufView.

bool WvTypedEncoder< IT , OT , WvEncoder >::flush WvBuf inbuf,
WvBuf outbuf,
bool  finish = false
[inline, inherited]
 

Reimplemented from WvEncoder.

Definition at line 81 of file wvtypedencoder.h.

References WvBuf.

bool WvTypedEncoder< IT , OT , WvEncoder >::flush IBuffer inbuf,
OBuffer outbuf,
bool  finish = false
[inline, inherited]
 

Typed variant of flush().

See also:
flush(WvBuf, WvBuf, bool)

Definition at line 59 of file wvtypedencoder.h.

References WvBufView.

bool WvEncoder::flushbufmem WvBuf inbuf,
void *  outmem,
size_t *  outlen,
bool  finish = false
[inline, inherited]
 

Flushes data through the encoder from a buffer to memory.

The outlen parameter specifies by reference the length of the output buffer. It is updated in place to reflect the number of bytes copied to the output buffer. If the buffer was too small to hold the data, the overflow bytes will be discarded and false will be returned.

"inbuf" is the input buffer "outmem" is the output data pointer "outlen" is the output data length, by reference "finish" is if true, calls finish() on success Returns: true on success

Definition at line 337 of file wvencoder.h.

References WvEncoder::encodebufmem(), and WvBuf.

Referenced by WvEncoder::flushstrmem().

bool WvEncoder::flushbufstr WvBuf inbuf,
WvString outstr,
bool  finish = false
[inline, inherited]
 

Flushes data through the encoder from a buffer to a string.

The output data is appended to the target string.

"inbuf" is the input buffer "outstr" is the output string "finish" is if true, calls finish() on success Returns: true on success

Definition at line 249 of file wvencoder.h.

References WvEncoder::encodebufstr(), and WvBuf.

Referenced by WvEncoder::strflushbuf().

bool WvEncoder::flushmembuf const void *  inmem,
size_t  inlen,
WvBuf outbuf,
bool  finish = false
[inherited]
 

Flushes data through the encoder from memory to a buffer.

"inmem" is the input data pointer "inlen" is the input data length "outbuf" is the output buffer "finish" is if true, calls finish() on success Returns: true on success

Definition at line 121 of file wvencoder.cc.

References WvEncoder::encode(), and WvBuf.

Referenced by WvDsp::uwrite().

bool WvEncoder::flushmemmem const void *  inmem,
size_t  inlen,
void *  outmem,
size_t *  outlen,
bool  finish = false
[inherited]
 

Flushes data through the encoder from memory to memory.

The outlen parameter specifies by reference the length of the output buffer. It is updated in place to reflect the number of bytes copied to the output buffer. If the buffer was too small to hold the data, the overflow bytes will be discarded and false will be returned.

"inmem" is the input data pointer "inlen" is the input data length "outmem" is the output data pointer "outlen" is the output data length, by reference "finish" is if true, calls finish() on success Returns: true on success

Definition at line 130 of file wvencoder.cc.

References WvEncoder::encodebufmem().

bool WvEncoder::flushstrbuf WvStringParm  instr,
WvBuf outbuf,
bool  finish = false
[inherited]
 

Flushes data through the encoder from a string to a buffer.

"instr" is the input string "outbuf" is the output buffer "finish" is if true, calls finish() on success Returns: true on success

Definition at line 75 of file wvencoder.cc.

References WvEncoder::encode(), WvBuf, and WvStringParm.

bool WvEncoder::flushstrmem WvStringParm  instr,
void *  outmem,
size_t *  outlen,
bool  finish = false
[inherited]
 

Flushes data through the encoder from a string to memory.

The outlen parameter specifies by reference the length of the output buffer. It is updated in place to reflect the number of bytes copied to the output buffer. If the buffer was too small to hold the data, the overflow bytes will be discarded and false will be returned.

"instr" is the input string "outmem" is the output data pointer "outlen" is the output data length, by reference "finish" is if true, calls finish() on success Returns: true on success

Definition at line 148 of file wvencoder.cc.

References WvEncoder::flushbufmem(), and WvStringParm.

bool WvEncoder::flushstrstr WvStringParm  instr,
WvString outstr,
bool  finish = false
[inherited]
 

Flushes data through the encoder from a string to a string.

The output data is appended to the target string.

"instr" is the input string "outstr" is the output string "finish" is if true, calls finish() on success Returns: true on success

Definition at line 84 of file wvencoder.cc.

References WvString::append(), WvEncoder::encode(), WvDynBuf, and WvStringParm.

Referenced by encode64(), and WvEncoder::strflushstr().

WvString WvEncoder::geterror  )  const [inherited]
 

Returns an error message if any is available.

Returns: the error message, or the null string is isok() == true

Definition at line 21 of file wvencoder.cc.

References WvEncoder::_geterror(), WvEncoder::errstr, and WvEncoder::isok().

Referenced by WvOggSpeexDecoder::_geterror(), and WvOggSpeexEncoder::_geterror().

bool WvEncoder::isfinished  )  const [inline, inherited]
 

Returns true if the encoder can no longer encode data.

This will be set when the encoder detects and end-of-data mark in its input, or when finish() is called.

Returns: true if the encoder is finished

Definition at line 101 of file wvencoder.h.

References WvEncoder::_isfinished(), and WvEncoder::finished.

Referenced by WvSpeexDecoder::missing().

bool WvEncoder::isok  )  const [inline, inherited]
 

Returns true if the encoder has not encountered an error.

This should only be used to record permanent failures. Transient errors (eg. bad block, but recoverable) should be detected in a different fashion.

Returns: true if the encoder is ok

Definition at line 90 of file wvencoder.h.

References WvEncoder::_isok(), and WvEncoder::okay.

Referenced by WvOggSpeexDecoder::_isok(), WvOggSpeexEncoder::_isok(), WvEncoder::geterror(), and WvSpeexDecoder::missing().

bool WvEncoder::reset  )  [inherited]
 

Asks an encoder to reset itself to its initial state at creation time, if supported.

This function may be called at any time, even if isok() == false, or isfinished() == true.

If the behaviour is not supported or an error occurs, then false is returned and afterwards isok() == false.

Returns: true on success

See also:
_reset for the actual implementation

Definition at line 58 of file wvencoder.cc.

References WvEncoder::_reset(), WvEncoder::errstr, WvEncoder::finished, WvEncoder::okay, and WvEncoder::seterror().

void WvEncoder::seterror WVSTRING_FORMAT_DECL   )  [inline, protected, inherited]
 

Sets an error condition, then setnotok().

Definition at line 379 of file wvencoder.h.

References WvEncoder::seterror(), and WVSTRING_FORMAT_CALL.

void WvEncoder::seterror WvStringParm  message  )  [inline, protected, inherited]
 

Sets an error condition, then setnotok().

Definition at line 375 of file wvencoder.h.

References WvEncoder::errstr, WvEncoder::setnotok(), and WvStringParm.

Referenced by WvHexDecoder::_encode(), WvBase64Decoder::_encode(), WvOggVorbisDecoder::_typedencode(), WvOggVorbisEncoder::_typedencode(), WvOggSpeexDecoder::_typedencode(), WvOggVorbisDecoder::_typedfinish(), WvOggSpeexDecoder::_typedfinish(), WvEncoder::reset(), WvEncoder::seterror(), WvOggSpeexDecoder::WvOggSpeexDecoder(), WvOggSpeexEncoder::WvOggSpeexEncoder(), WvOggVorbisDecoder::WvOggVorbisDecoder(), WvOggVorbisEncoder::WvOggVorbisEncoder(), WvSpeexDecoder::WvSpeexDecoder(), and WvSpeexEncoder::WvSpeexEncoder().

void WvEncoder::setfinished  )  [inline, protected, inherited]
 

Sets 'finished' to true explicitly.

Definition at line 383 of file wvencoder.h.

References WvEncoder::finished.

Referenced by WvBase64Decoder::_encode(), WvOggVorbisDecoder::_typedencode(), WvOggSpeexDecoder::_typedencode(), and WvEncoder::finish().

void WvEncoder::setnotok  )  [inline, protected, inherited]
 

Sets 'okay' to false explicitly.

Definition at line 371 of file wvencoder.h.

References WvEncoder::okay.

Referenced by WvEncoder::seterror().

WvString WvEncoder::strflushbuf WvBuf inbuf,
bool  finish = false
[inherited]
 

Flushes data through the encoder from a buffer to a string.

"inbuf" is the input buffer "finish" is if true, calls finish() on success Returns: the resulting encoded string, does not signal errors

Definition at line 113 of file wvencoder.cc.

References WvEncoder::flushbufstr(), and WvBuf.

Referenced by WvEncoder::strflushmem().

WvString WvEncoder::strflushmem const void *  inmem,
size_t  inlen,
bool  finish = false
[inherited]
 

Flushes data through the encoder from memory to a string.

"inmem" is the input data pointer "inlen" is the input data length "finish" is if true, calls finish() on success Returns: the resulting encoded string, does not signal errors

Definition at line 156 of file wvencoder.cc.

References WvEncoder::strflushbuf().

WvString WvEncoder::strflushstr WvStringParm  instr,
bool  finish = false
[inherited]
 

Flushes data through the encoder from a string to a string.

"inbuf" is the input buffer "finish" is if true, calls finish() on success Returns: the resulting encoded string, does not signal errors

Definition at line 105 of file wvencoder.cc.

References WvEncoder::flushstrstr(), and WvStringParm.


Member Data Documentation

WvString WvEncoder::errstr [protected, inherited]
 

the error message

Definition at line 72 of file wvencoder.h.

Referenced by WvEncoder::geterror(), WvEncoder::reset(), and WvEncoder::seterror().

template<class IT, class OT, class FT>
FT WvFunctorEncoder< IT, OT, FT >::f [protected]
 

Definition at line 34 of file wvfunctorencoder.h.

Referenced by WvFunctorEncoder< signed short int, float, WvPCMSigned16ToUnnormFloatFunctor >::_typedencode().

bool WvEncoder::finished [protected, inherited]
 

true iff setfinished()/finish() was called

Definition at line 71 of file wvencoder.h.

Referenced by WvEncoder::encode(), WvEncoder::finish(), WvEncoder::isfinished(), WvEncoder::reset(), and WvEncoder::setfinished().

bool WvEncoder::okay [protected, inherited]
 

false iff setnotok() was called

Definition at line 70 of file wvencoder.h.

Referenced by WvEncoder::encode(), WvEncoder::finish(), WvEncoder::isok(), WvEncoder::reset(), and WvEncoder::setnotok().


The documentation for this class was generated from the following file:
Generated on Sat Mar 13 14:57:51 2004 for WvStreams by doxygen 1.3.6-20040222