Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
Gray::cStreamStackOut Class Referenceabstract

#include <cStreamStack.h>

Inheritance diagram for Gray::cStreamStackOut:
Gray::cStreamQueue Gray::cStream Gray::cQueueBytes Gray::cStreamInput Gray::cStreamOutput Gray::cQueueDyn< BYTE > Gray::cStreamBase Gray::cStreamBase Gray::cQueueRW< TYPE > Gray::cQueueRead< BYTE > Gray::cQueueBase Gray::cStreamStackPackets GrayCodec::cAudioAACEnc GrayCodec::cAudioMP3Enc GrayCodec::cAudioOpusEnc GrayLib::cAudioADPCMEnc GrayLib::cStreamBZ2Compress GrayLib::cStreamCipherEnc GrayLib::cStreamZLibCompress

Public Member Functions

 cStreamStackOut (cStreamOutput *pStreamOut=nullptr, size_t nSizeBuffer=cStream::k_FILE_BLOCK_SIZE)
 
virtual HRESULT WriteX (const void *pData, size_t nDataSize) override=0
 
- Public Member Functions inherited from Gray::cStreamQueue
 cStreamQueue (size_t nGrowSizeChunk=4 *1024, size_t nGrowSizeMax=cHeap::k_ALLOC_MAX) noexcept
 
 ~cStreamQueue ()
 
virtual HRESULT ReadX (void *pData, size_t nDataSize) override
 
virtual HRESULT ReadPeek (void *pData, size_t nDataSize) override
 
virtual size_t SetSeekSizeMin (size_t nSizeMin=k_FILE_BLOCK_SIZE) override
 
virtual STREAM_SEEKRET_t Seek (STREAM_OFFSET_t offset, SEEK_ORIGIN_TYPE eSeekOrigin=SEEK_Set) override
 Disambiguate Seek for cStreamBase to cStreamInput for stupid compiler. More...
 
virtual STREAM_POS_t GetLength () const override
 
- Public Member Functions inherited from Gray::cStream
virtual STREAM_POS_t GetPosition () const override
 
void SeekToBegin ()
 
STREAM_POS_t SeekToEnd ()
 
- Public Member Functions inherited from Gray::cStreamInput
 cStreamInput () noexcept
 
virtual ~cStreamInput ()
 
virtual HRESULT ReadX (OUT void *pData, size_t nDataSize)
 
HRESULT ReadAll (OUT cHeapBlock &block, size_t nSizeExtra=0)
 
virtual HRESULT ReadStringLine (OUT char *pszBuffer, StrLen_t iSizeMax)
 
virtual HRESULT ReadStringLine (OUT wchar_t *pszBuffer, StrLen_t iSizeMax)
 
HRESULT ReadT (OUT void *pVal, size_t nSize)
 
template<typename TYPE >
HRESULT ReadT (OUT TYPE &val)
 
template<typename TYPE >
HRESULT ReadTN (OUT TYPE &val)
 
HRESULT ReadSize (OUT size_t &nSize)
 
template<typename TYPE >
HRESULT ReadSizeT (OUT TYPE &n)
 
HRESULT ReadHashCode (OUT UINT32 &nHashCode)
 
HRESULT ReadHashCode (OUT UINT64 &nHashCode)
 
HRESULT ReadN (OUT BYTE *pBuffer, size_t nSizeMax)
 
template<typename _CH >
HRESULT ReadStringN (OUT _CH *pszStr, StrLen_t iSizeMax)
 
- Public Member Functions inherited from Gray::cStreamBase
virtual ~cStreamBase ()
 
void SeekToBegin ()
 
STREAM_POS_t SeekToEnd ()
 
- Public Member Functions inherited from Gray::cStreamOutput
 cStreamOutput () noexcept
 
virtual ~cStreamOutput ()
 
HRESULT WriteT (const void *pVal, size_t nDataSize)
 
template<typename TYPE >
HRESULT WriteT (TYPE val)
 
HRESULT WriteSize (size_t nSize)
 
HRESULT WriteHashCode (HASHCODE_t nHashCode)
 
HRESULT WriteN (const void *pBuffer, size_t nSize)
 
template<typename _CH >
HRESULT WriteStringN (const _CH *pszStr)
 
template<typename _CH >
HRESULT WriteCharRepeat (_CH nChar, int nCount=1)
 
virtual HRESULT WriteString (const char *pszStr)
 
virtual HRESULT WriteString (const wchar_t *pszStr)
 
StrLen_t VPrintf (const char *pszFormat, va_list args)
 
StrLen_t VPrintf (const wchar_t *pszFormat, va_list args)
 
StrLen_t _cdecl Printf (const char *pszFormat,...)
 
StrLen_t _cdecl Printf (const wchar_t *pszFormat,...)
 
HRESULT WriteStream (cStreamInput &sInp, STREAM_POS_t nSizeMax=k_FILE_BLOCK_SIZE, IStreamProgressCallback *pProgress=nullptr, TIMESYSD_t nTimeout=0)
 Copy cStreamInput to this stream. More...
 
virtual HRESULT FlushX ()
 
- Public Member Functions inherited from Gray::cQueueBytes
 cQueueBytes (size_t nGrowSizeChunk=8 *1024, size_t nGrowSizeMax=cHeap::k_ALLOC_MAX) noexcept
 
 ~cQueueBytes ()
 
bool InsertDataHead (const BYTE *pDataSrc, size_t iLen)
 
bool SetAllData (const BYTE *pData, size_t iLen)
 
- Public Member Functions inherited from Gray::cQueueDyn< BYTE >
 cQueueDyn (ITERATE_t nGrowSizeChunk=128, ITERATE_t nGrowSizeMax=(cHeap::k_ALLOC_MAX/sizeof(BYTE))) noexcept
 
 ~cQueueDyn ()
 
void put_GrowSizeChunk (ITERATE_t nGrowSizeChunk) noexcept
 
ITERATE_t get_GrowSizeChunk () const noexcept
 
bool MakeWritePrepared (ITERATE_t iDesiredCount=1)
 
BYTE * GetWritePrepared (ITERATE_t iDesiredCount=1)
 
bool WriteQ (BYTE val)
 
void WriteQ (cQueueRead< BYTE > &queue)
 
HRESULT WriteQty (const BYTE *pVal, ITERATE_t iCount)
 
HRESULT WriteX (const void *pData, size_t nDataSize)
 
- Public Member Functions inherited from Gray::cQueueRW< TYPE >
 cQueueRW () noexcept
 
 cQueueRW (TYPE *pData, ITERATE_t iDataAlloc, ITERATE_t iReadLast, ITERATE_t iWriteLast, ITERATE_t iAutoReadCommit=0)
 
 cQueueRW (const TYPE *pData, ITERATE_t iDataMax)
 
 ~cQueueRW ()
 
void ReadCommitCheck ()
 
ITERATE_t get_AutoReadCommit () const
 
void put_AutoReadCommit (ITERATE_t iAutoReadCommit=8 *1024)
 
void put_ReadIndex (ITERATE_t iReadLo)
 
STREAM_SEEKRET_t SeekQ (STREAM_OFFSET_t iOffset, SEEK_ORIGIN_TYPE eSeekOrigin=SEEK_Set)
 
HRESULT ReadQty (TYPE *pData, ITERATE_t iDataMaxQty)
 
HRESULT ReadX (void *pData, size_t nDataSize)
 
bool isFullQ () const
 
ITERATE_t get_WriteQty () const
 
TYPEget_WritePtr () const
 
HRESULT WriteQty (const TYPE *pData, ITERATE_t iQtyMax)
 
HRESULT WriteX (const void *pData, size_t nDataSize)
 
void AdvanceWrite (ITERATE_t iCount=1)
 
- Public Member Functions inherited from Gray::cQueueRead< BYTE >
 cQueueRead (const BYTE *pData=nullptr, ITERATE_t iReadLast=0, ITERATE_t iWriteLast=0) noexcept
 
 ~cQueueRead ()
 
const BYTE * get_ReadPtr () const
 
void SetQueueRead (const BYTE *pData, ITERATE_t iReadLast=0, ITERATE_t iWriteLast=0)
 
BYTE Read1 (void)
 
HRESULT ReadPeek (BYTE *pData, ITERATE_t iDataMaxQty)
 
HRESULT ReadQty (BYTE *pData, ITERATE_t iDataMaxQty)
 
void ReadCommitNow ()
 
- Public Member Functions inherited from Gray::cQueueBase
 cQueueBase (ITERATE_t iReadLast=0, ITERATE_t iWriteLast=0) noexcept
 
void InitQ (ITERATE_t iReadLast=0, ITERATE_t iWriteLast=0) noexcept
 
bool isEmptyQ () const noexcept
 
void EmptyQ () noexcept
 
ITERATE_t get_ReadIndex () const noexcept
 
ITERATE_t get_WriteIndex () const noexcept
 
ITERATE_t get_ReadQty () const
 
void AdvanceRead (ITERATE_t iCount=1)
 
STREAM_SEEKRET_t SeekQ (STREAM_OFFSET_t iOffset, SEEK_ORIGIN_TYPE eSeekOrigin=SEEK_Set)
 

Protected Member Functions

HRESULT WriteFlush ()
 
- Protected Member Functions inherited from Gray::cStreamQueue
 cStreamQueue (const cStreamQueue &a) noexcept
 
- Protected Member Functions inherited from Gray::cQueueDyn< BYTE >
bool AllocSizeMaxQ (ITERATE_t iDataAlloc)
 
- Protected Member Functions inherited from Gray::cQueueRW< TYPE >
void WriteQN (const TYPE *pData, ITERATE_t iQtyMax)
 

Protected Attributes

cStreamOutputm_pStreamOut
 End result output stream. called by WriteFlush() More...
 
- Protected Attributes inherited from Gray::cQueueDyn< BYTE >
ITERATE_t m_nGrowSizeChunk
 number of TYPE elements to grow by in a single re-alloc chunk. 0 = never grow. More...
 
ITERATE_t m_nGrowSizeMax
 Total arbitrary max allowed for m_iDataSizeAlloc. 0 = never grow. More...
 
- Protected Attributes inherited from Gray::cQueueRW< TYPE >
ITERATE_t m_iDataSizeAlloc
 The max qty we can write into m_pData. Maybe NOT exactly same as m_pData true OS allocated size? More...
 
ITERATE_t m_iAutoReadCommit
 Read data is destroyed once read more than this amount. make more room for writing. 0 = don't do this, just fail write if we run out of space. More...
 
- Protected Attributes inherited from Gray::cQueueRead< BYTE >
BYTE * m_pData
 NOT owned/managed block of memory I read from. not freed on destruct. More...
 
- Protected Attributes inherited from Gray::cQueueBase
ITERATE_t m_iReadLast
 old items removed/read from here. More...
 
ITERATE_t m_iWriteLast
 new items added/written here. end of read. More...
 

Additional Inherited Members

- Static Public Attributes inherited from Gray::cStreamBase
static const BYTE k_SIZE_MASK = 0x80
 Used for WriteSize() More...
 
static const size_t k_FILE_BLOCK_SIZE = (32 * 1024)
 default arbitrary transfer block size. more than this is NOT more efficient. More...
 

Detailed Description

Stack of output streams. Acts like a codec, compressor, cipher, etc. This output stream will process data and push it along to another output stream via m_pOut->WriteX().

Note
WriteX() MUST take all data passed to it and cQueueRW it up if it cant process immediately. ASSUME derived class overrides WriteX and calls WriteFlush

Constructor & Destructor Documentation

◆ cStreamStackOut()

Gray::cStreamStackOut::cStreamStackOut ( cStreamOutput pStreamOut = nullptr,
size_t  nSizeBuffer = cStream::k_FILE_BLOCK_SIZE 
)
inline

Member Function Documentation

◆ WriteFlush()

HRESULT Gray::cStreamStackOut::WriteFlush ( )
protected

Push the compressed data from m_buffer cQueueRW out to a down stream/file. m_pStreamOut called by WriteX()

◆ WriteX()

virtual HRESULT Gray::cStreamStackOut::WriteX ( const void *  pData,
size_t  nDataSize 
)
overridepure virtual

Member Data Documentation

◆ m_pStreamOut

cStreamOutput* Gray::cStreamStackOut::m_pStreamOut
protected

End result output stream. called by WriteFlush()


The documentation for this class was generated from the following files: