Lines Matching defs:zbc
3806 ZBUFFv05_DCtx* zbc = (ZBUFFv05_DCtx*)malloc(sizeof(ZBUFFv05_DCtx));
3807 if (zbc==NULL) return NULL;
3808 memset(zbc, 0, sizeof(*zbc));
3809 zbc->zc = ZSTDv05_createDCtx();
3810 zbc->stage = ZBUFFv05ds_init;
3811 return zbc;
3814 size_t ZBUFFv05_freeDCtx(ZBUFFv05_DCtx* zbc)
3816 if (zbc==NULL) return 0; /* support free on null */
3817 ZSTDv05_freeDCtx(zbc->zc);
3818 free(zbc->inBuff);
3819 free(zbc->outBuff);
3820 free(zbc);
3827 size_t ZBUFFv05_decompressInitDictionary(ZBUFFv05_DCtx* zbc, const void* dict, size_t dictSize)
3829 zbc->stage = ZBUFFv05ds_readHeader;
3830 zbc->hPos = zbc->inPos = zbc->outStart = zbc->outEnd = 0;
3831 return ZSTDv05_decompressBegin_usingDict(zbc->zc, dict, dictSize);
3834 size_t ZBUFFv05_decompressInit(ZBUFFv05_DCtx* zbc)
3836 return ZBUFFv05_decompressInitDictionary(zbc, NULL, 0);
3842 size_t ZBUFFv05_decompressContinue(ZBUFFv05_DCtx* zbc, void* dst, size_t* maxDstSizePtr, const void* src, size_t* srcSizePtr)
3853 switch(zbc->stage)
3861 size_t headerSize = ZSTDv05_getFrameParams(&(zbc->params), src, *srcSizePtr);
3865 memcpy(zbc->headerBuffer+zbc->hPos, src, *srcSizePtr);
3866 zbc->hPos += *srcSizePtr;
3868 zbc->stage = ZBUFFv05ds_loadHeader;
3869 return headerSize - zbc->hPos;
3871 zbc->stage = ZBUFFv05ds_decodeHeader;
3879 zbc->headerBuffer + zbc->hPos, ZSTDv05_frameHeaderSize_max - zbc->hPos,
3881 zbc->hPos += headerSize;
3883 headerSize = ZSTDv05_getFrameParams(&(zbc->params), zbc->headerBuffer, zbc->hPos);
3888 return headerSize - zbc->hPos;
3890 /* zbc->stage = ZBUFFv05ds_decodeHeader; break; */ /* useless : stage follows */
3896 size_t neededOutSize = (size_t)1 << zbc->params.windowLog;
3898 if (zbc->inBuffSize < neededInSize) {
3899 free(zbc->inBuff);
3900 zbc->inBuffSize = neededInSize;
3901 zbc->inBuff = (char*)malloc(neededInSize);
3902 if (zbc->inBuff == NULL) return ERROR(memory_allocation);
3904 if (zbc->outBuffSize < neededOutSize) {
3905 free(zbc->outBuff);
3906 zbc->outBuffSize = neededOutSize;
3907 zbc->outBuff = (char*)malloc(neededOutSize);
3908 if (zbc->outBuff == NULL) return ERROR(memory_allocation);
3910 if (zbc->hPos) {
3912 memcpy(zbc->inBuff, zbc->headerBuffer, zbc->hPos);
3913 zbc->inPos = zbc->hPos;
3914 zbc->hPos = 0;
3915 zbc->stage = ZBUFFv05ds_load;
3918 zbc->stage = ZBUFFv05ds_read;
3922 size_t neededInSize = ZSTDv05_nextSrcSizeToDecompress(zbc->zc);
3924 zbc->stage = ZBUFFv05ds_init;
3930 size_t decodedSize = ZSTDv05_decompressContinue(zbc->zc,
3931 zbc->outBuff + zbc->outStart, zbc->outBuffSize - zbc->outStart,
3936 zbc->outEnd = zbc->outStart + decodedSize;
3937 zbc->stage = ZBUFFv05ds_flush;
3941 zbc->stage = ZBUFFv05ds_load;
3946 size_t neededInSize = ZSTDv05_nextSrcSizeToDecompress(zbc->zc);
3947 size_t toLoad = neededInSize - zbc->inPos; /* should always be <= remaining space within inBuff */
3949 if (toLoad > zbc->inBuffSize - zbc->inPos) return ERROR(corruption_detected); /* should never happen */
3950 loadedSize = ZBUFFv05_limitCopy(zbc->inBuff + zbc->inPos, toLoad, ip, iend-ip);
3952 zbc->inPos += loadedSize;
3955 size_t decodedSize = ZSTDv05_decompressContinue(zbc->zc,
3956 zbc->outBuff + zbc->outStart, zbc->outBuffSize - zbc->outStart,
3957 zbc->inBuff, neededInSize);
3959 zbc->inPos = 0; /* input is consumed */
3960 if (!decodedSize) { zbc->stage = ZBUFFv05ds_read; break; } /* this was just a header */
3961 zbc->outEnd = zbc->outStart + decodedSize;
3962 zbc->stage = ZBUFFv05ds_flush;
3969 size_t toFlushSize = zbc->outEnd - zbc->outStart;
3970 size_t flushedSize = ZBUFFv05_limitCopy(op, oend-op, zbc->outBuff + zbc->outStart, toFlushSize);
3972 zbc->outStart += flushedSize;
3974 zbc->stage = ZBUFFv05ds_read;
3975 if (zbc->outStart + BLOCKSIZE > zbc->outBuffSize)
3976 zbc->outStart = zbc->outEnd = 0;
3989 { size_t nextSrcSizeHint = ZSTDv05_nextSrcSizeToDecompress(zbc->zc);
3991 nextSrcSizeHint -= zbc->inPos; /* already loaded*/