streamsize in_bufsize,
54streamsize out_bufsize)
56: m_Processor(processor),
59m_NeedDelete(need_delete), m_State(eDone)
112 Create(stream, read_sp, write_sp, ownership);
117:
CNcbiIos(0), m_Stream(0), m_StreamBuf(0),
118m_Reader(0), m_Writer(0), m_Ownership(0)
143setstate(badbit | eofbit);
146setstate(stream.rdstate());
204 int& status,
string& description)
219status =
cmp->GetErrorCode();
220description =
cmp->GetErrorDescription();
247 char* ptr = (
char*)
buf;
259 returnptr - (
char*)
buf;
268 const char* ptr = (
const char*)
buf;
279 returnptr - (
const char*)
buf;
285 char* ptr = (
char*)
buf;
297 returnptr - (
char*)
buf;
306 const char* ptr = (
const char*)
buf;
317 returnptr - (
const char*)
buf;
346 const char* in_buf,
size_tin_len,
347 char* out_buf,
size_tout_size,
355 size_t n=
min(in_len, out_size);
356memcpy(out_buf, in_buf,
n);
357*in_avail = in_len -
n;
static void DLIST_NAME() init(DLIST_LIST_TYPE *list)
CT_CHAR_TYPE * m_OutBuf
Buffer of processed data.
CCompressionStreambuf * m_StreamBuf
Stream buffer.
CCompressionStreamProcessor * m_Writer
Write processor.
bool x_GetError(CCompressionStream::EDirection dir, int &status, string &description)
Get error code and description of last compressor/decompressor stream operation.
CCompressionStreamProcessor * m_Reader
Read processor.
TOwnership m_Ownership
Bitwise OR of EOwnership.
virtual ~CTransparentProcessor(void)
EState m_State
Stream processor state.
CCompressionStreamProcessor(CCompressionProcessor *processor, EDeleteProcessor need_delete=eNoDelete, streamsize in_bufsize=kCompressionDefaultBufSize, streamsize out_bufsize=kCompressionDefaultBufSize)
Constructor.
size_t Write(const void *buf, size_t len)
Auxiliary method to write into stream.
EDeleteProcessor
If to delete the used compression processor in the destructor.
virtual EStatus Flush(char *out_buf, size_t out_size, size_t *out_avail)
Flush compressed/decompressed data from the output buffer.
size_t Write(const void *buf, size_t len)
Auxiliary method to write into stream.
virtual EStatus End(int abandon=0)
Free all dynamically allocated data structures.
size_t x_GetProcessedSize(CCompressionStream::EDirection dir)
Return number of processed bytes.
CT_CHAR_TYPE * m_Begin
Begin and end of the pre/post.
CCompressionProcessor::EStatus x_GetStatus(CCompressionStream::EDirection dir)
Get status of last compression/decompression stream operation.
CCompressionStream(void)
Default constructor.
void Create(CNcbiIos &stream, CCompressionStreamProcessor *read_sp, CCompressionStreamProcessor *write_sp, TOwnership ownership=0)
Create stream with specific characteristics later, not necessary in the constructor.
CNcbiIos * m_Stream
Underlying stream.
void Init(void)
(Re)Initialize stream processor.
int Finalize(CCompressionStream::EDirection dir=CCompressionStream::eReadWrite)
virtual void Finalize(CCompressionStream::EDirection dir=CCompressionStream::eReadWrite)
Finalize stream's compression/decompression process for read/write.
CCompressionProcessor::EStatus m_LastStatus
Last compressor status.
virtual ~CCompressionStreamProcessor(void)
Destructor.
CCompressionProcessor * m_Processor
(De)compression processor.
virtual EStatus Finish(char *out_buf, size_t out_size, size_t *out_avail)
Finish the compression/decompression process.
virtual EStatus Process(const char *in_buf, size_t in_len, char *out_buf, size_t out_size, size_t *in_avail, size_t *out_avail)
Compress/decompress as much data as possible, and stops when the input buffer becomes empty or the ou...
size_t Read(void *buf, size_t len)
Auxiliary method to read from stream.
virtual EStatus Init(void)
Initialize the internal stream state for compression/decompression.
EDeleteProcessor m_NeedDelete
m_Processor auto-deleting flag.
EDirection
Stream processing direction.
CT_CHAR_TYPE * m_InBuf
Buffer of unprocessed data.
size_t x_GetOutputSize(CCompressionStream::EDirection dir)
Return number of output bytes.
size_t Read(void *buf, size_t len)
Auxiliary method to read from stream.
int TOwnership
Bitwise OR of EOwnership.
virtual ~CCompressionStream(void)
Destructor.
CT_CHAR_TYPE * m_End
processed data in the buffer.
@ eDone
End() done, processor cannot process data.
@ eInit
Init() is done, but no data to process.
@ eDelete
Do delete processor object.
@ eRead
Reading from stream.
@ fOwnReader
Delete the reader.
@ fOwnWriter
Delete the writer.
@ fOwnStream
Delete the underlying I/O stream.
void IncreaseProcessedSize(size_t n_bytes)
void IncreaseOutputSize(size_t n_bytes)
size_t GetOutputSize(void)
void SetBusy(bool busy=true)
Set/unset compressor busy flag.
bool IsBusy(void) const
Return compressor's busy flag.
const streamsize kCompressionDefaultBufSize
Default compression I/O stream buffer size.
EStatus
Type of the result of all basic functions.
#define COMPRESS_HANDLE_EXCEPTIONS(subcode, message)
Macro to catch and handle exceptions (from streams in the destructor)
size_t GetProcessedSize(void)
virtual EStatus End(int abandon=0)=0
Free all dynamically allocated data structures.
virtual EStatus Init(void)=0
Initialize the internal stream state for compression/decompression.
@ eStatus_Overflow
Output buffer overflow - not enough output space.
@ eStatus_EndOfData
Special case of eStatus_Success.
@ eStatus_Unknown
Special value. Status is undefined.
@ eStatus_Success
Everything is fine, no errors occurred.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
IO_PREFIX::ios CNcbiIos
Portable alias for ios.
Definition of all error codes used in util (xutil.lib).
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4