1a28cd43dSSascha Wildner /*
2a28cd43dSSascha Wildner * Copyright (c) 2016-2020, Yann Collet, Facebook, Inc.
3a28cd43dSSascha Wildner * All rights reserved.
4a28cd43dSSascha Wildner *
5a28cd43dSSascha Wildner * This source code is licensed under both the BSD-style license (found in the
6a28cd43dSSascha Wildner * LICENSE file in the root directory of this source tree) and the GPLv2 (found
7a28cd43dSSascha Wildner * in the COPYING file in the root directory of this source tree).
8a28cd43dSSascha Wildner * You may select, at your option, one of the above-listed licenses.
9a28cd43dSSascha Wildner */
10a28cd43dSSascha Wildner
11a28cd43dSSascha Wildner
12a28cd43dSSascha Wildner
13a28cd43dSSascha Wildner /* *************************************
14a28cd43dSSascha Wildner * Dependencies
15a28cd43dSSascha Wildner ***************************************/
16a28cd43dSSascha Wildner #define ZBUFF_STATIC_LINKING_ONLY
17a28cd43dSSascha Wildner #include "zbuff.h"
18a28cd43dSSascha Wildner
19a28cd43dSSascha Wildner
ZBUFF_createDCtx(void)20a28cd43dSSascha Wildner ZBUFF_DCtx* ZBUFF_createDCtx(void)
21a28cd43dSSascha Wildner {
22a28cd43dSSascha Wildner return ZSTD_createDStream();
23a28cd43dSSascha Wildner }
24a28cd43dSSascha Wildner
ZBUFF_createDCtx_advanced(ZSTD_customMem customMem)25a28cd43dSSascha Wildner ZBUFF_DCtx* ZBUFF_createDCtx_advanced(ZSTD_customMem customMem)
26a28cd43dSSascha Wildner {
27a28cd43dSSascha Wildner return ZSTD_createDStream_advanced(customMem);
28a28cd43dSSascha Wildner }
29a28cd43dSSascha Wildner
ZBUFF_freeDCtx(ZBUFF_DCtx * zbd)30a28cd43dSSascha Wildner size_t ZBUFF_freeDCtx(ZBUFF_DCtx* zbd)
31a28cd43dSSascha Wildner {
32a28cd43dSSascha Wildner return ZSTD_freeDStream(zbd);
33a28cd43dSSascha Wildner }
34a28cd43dSSascha Wildner
35a28cd43dSSascha Wildner
36a28cd43dSSascha Wildner /* *** Initialization *** */
37a28cd43dSSascha Wildner
ZBUFF_decompressInitDictionary(ZBUFF_DCtx * zbd,const void * dict,size_t dictSize)38a28cd43dSSascha Wildner size_t ZBUFF_decompressInitDictionary(ZBUFF_DCtx* zbd, const void* dict, size_t dictSize)
39a28cd43dSSascha Wildner {
40a28cd43dSSascha Wildner return ZSTD_initDStream_usingDict(zbd, dict, dictSize);
41a28cd43dSSascha Wildner }
42a28cd43dSSascha Wildner
ZBUFF_decompressInit(ZBUFF_DCtx * zbd)43a28cd43dSSascha Wildner size_t ZBUFF_decompressInit(ZBUFF_DCtx* zbd)
44a28cd43dSSascha Wildner {
45a28cd43dSSascha Wildner return ZSTD_initDStream(zbd);
46a28cd43dSSascha Wildner }
47a28cd43dSSascha Wildner
48a28cd43dSSascha Wildner
49a28cd43dSSascha Wildner /* *** Decompression *** */
50a28cd43dSSascha Wildner
ZBUFF_decompressContinue(ZBUFF_DCtx * zbd,void * dst,size_t * dstCapacityPtr,const void * src,size_t * srcSizePtr)51a28cd43dSSascha Wildner size_t ZBUFF_decompressContinue(ZBUFF_DCtx* zbd,
52a28cd43dSSascha Wildner void* dst, size_t* dstCapacityPtr,
53a28cd43dSSascha Wildner const void* src, size_t* srcSizePtr)
54a28cd43dSSascha Wildner {
55a28cd43dSSascha Wildner ZSTD_outBuffer outBuff;
56a28cd43dSSascha Wildner ZSTD_inBuffer inBuff;
57a28cd43dSSascha Wildner size_t result;
58a28cd43dSSascha Wildner outBuff.dst = dst;
59a28cd43dSSascha Wildner outBuff.pos = 0;
60a28cd43dSSascha Wildner outBuff.size = *dstCapacityPtr;
61a28cd43dSSascha Wildner inBuff.src = src;
62a28cd43dSSascha Wildner inBuff.pos = 0;
63a28cd43dSSascha Wildner inBuff.size = *srcSizePtr;
64a28cd43dSSascha Wildner result = ZSTD_decompressStream(zbd, &outBuff, &inBuff);
65a28cd43dSSascha Wildner *dstCapacityPtr = outBuff.pos;
66a28cd43dSSascha Wildner *srcSizePtr = inBuff.pos;
67a28cd43dSSascha Wildner return result;
68a28cd43dSSascha Wildner }
69a28cd43dSSascha Wildner
70a28cd43dSSascha Wildner
71a28cd43dSSascha Wildner /* *************************************
72a28cd43dSSascha Wildner * Tool functions
73a28cd43dSSascha Wildner ***************************************/
ZBUFF_recommendedDInSize(void)74a28cd43dSSascha Wildner size_t ZBUFF_recommendedDInSize(void) { return ZSTD_DStreamInSize(); }
ZBUFF_recommendedDOutSize(void)75a28cd43dSSascha Wildner size_t ZBUFF_recommendedDOutSize(void) { return ZSTD_DStreamOutSize(); }
76