Merge pull request #1105 from terrelln/get-param
Add ZSTD_CCtx(Param)?_getParameter() function
This commit is contained in:
commit
1f25b17c7d
@ -477,6 +477,98 @@ size_t ZSTD_CCtxParam_setParameter(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size_t ZSTD_CCtx_getParameter(ZSTD_CCtx* cctx, ZSTD_cParameter param, unsigned* value)
|
||||||
|
{
|
||||||
|
return ZSTD_CCtxParam_getParameter(&cctx->requestedParams, param, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t ZSTD_CCtxParam_getParameter(
|
||||||
|
ZSTD_CCtx_params* CCtxParams, ZSTD_cParameter param, unsigned* value)
|
||||||
|
{
|
||||||
|
switch(param)
|
||||||
|
{
|
||||||
|
case ZSTD_p_format :
|
||||||
|
*value = CCtxParams->format;
|
||||||
|
break;
|
||||||
|
case ZSTD_p_compressionLevel :
|
||||||
|
*value = CCtxParams->compressionLevel;
|
||||||
|
break;
|
||||||
|
case ZSTD_p_windowLog :
|
||||||
|
*value = CCtxParams->cParams.windowLog;
|
||||||
|
break;
|
||||||
|
case ZSTD_p_hashLog :
|
||||||
|
*value = CCtxParams->cParams.hashLog;
|
||||||
|
break;
|
||||||
|
case ZSTD_p_chainLog :
|
||||||
|
*value = CCtxParams->cParams.chainLog;
|
||||||
|
break;
|
||||||
|
case ZSTD_p_searchLog :
|
||||||
|
*value = CCtxParams->cParams.searchLog;
|
||||||
|
break;
|
||||||
|
case ZSTD_p_minMatch :
|
||||||
|
*value = CCtxParams->cParams.searchLength;
|
||||||
|
break;
|
||||||
|
case ZSTD_p_targetLength :
|
||||||
|
*value = CCtxParams->cParams.targetLength;
|
||||||
|
break;
|
||||||
|
case ZSTD_p_compressionStrategy :
|
||||||
|
*value = (unsigned)CCtxParams->cParams.strategy;
|
||||||
|
break;
|
||||||
|
case ZSTD_p_compressLiterals:
|
||||||
|
*value = !CCtxParams->disableLiteralCompression;
|
||||||
|
break;
|
||||||
|
case ZSTD_p_contentSizeFlag :
|
||||||
|
*value = CCtxParams->fParams.contentSizeFlag;
|
||||||
|
break;
|
||||||
|
case ZSTD_p_checksumFlag :
|
||||||
|
*value = CCtxParams->fParams.checksumFlag;
|
||||||
|
break;
|
||||||
|
case ZSTD_p_dictIDFlag :
|
||||||
|
*value = !CCtxParams->fParams.noDictIDFlag;
|
||||||
|
break;
|
||||||
|
case ZSTD_p_forceMaxWindow :
|
||||||
|
*value = CCtxParams->forceWindow;
|
||||||
|
break;
|
||||||
|
case ZSTD_p_nbWorkers :
|
||||||
|
#ifndef ZSTD_MULTITHREAD
|
||||||
|
assert(CCtxParams->nbWorkers == 0);
|
||||||
|
#endif
|
||||||
|
*value = CCtxParams->nbWorkers;
|
||||||
|
break;
|
||||||
|
case ZSTD_p_jobSize :
|
||||||
|
#ifndef ZSTD_MULTITHREAD
|
||||||
|
return ERROR(parameter_unsupported);
|
||||||
|
#else
|
||||||
|
*value = CCtxParams->jobSize;
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
case ZSTD_p_overlapSizeLog :
|
||||||
|
#ifndef ZSTD_MULTITHREAD
|
||||||
|
return ERROR(parameter_unsupported);
|
||||||
|
#else
|
||||||
|
*value = CCtxParams->overlapSizeLog;
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
case ZSTD_p_enableLongDistanceMatching :
|
||||||
|
*value = CCtxParams->ldmParams.enableLdm;
|
||||||
|
break;
|
||||||
|
case ZSTD_p_ldmHashLog :
|
||||||
|
*value = CCtxParams->ldmParams.hashLog;
|
||||||
|
break;
|
||||||
|
case ZSTD_p_ldmMinMatch :
|
||||||
|
*value = CCtxParams->ldmParams.minMatchLength;
|
||||||
|
break;
|
||||||
|
case ZSTD_p_ldmBucketSizeLog :
|
||||||
|
*value = CCtxParams->ldmParams.bucketSizeLog;
|
||||||
|
break;
|
||||||
|
case ZSTD_p_ldmHashEveryLog :
|
||||||
|
*value = CCtxParams->ldmParams.hashEveryLog;
|
||||||
|
break;
|
||||||
|
default: return ERROR(parameter_unsupported);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/** ZSTD_CCtx_setParametersUsingCCtxParams() :
|
/** ZSTD_CCtx_setParametersUsingCCtxParams() :
|
||||||
* just applies `params` into `cctx`
|
* just applies `params` into `cctx`
|
||||||
* no action is performed, parameters are merely stored.
|
* no action is performed, parameters are merely stored.
|
||||||
|
13
lib/zstd.h
13
lib/zstd.h
@ -1071,6 +1071,12 @@ typedef enum {
|
|||||||
* or an error code (which can be tested with ZSTD_isError()). */
|
* or an error code (which can be tested with ZSTD_isError()). */
|
||||||
ZSTDLIB_API size_t ZSTD_CCtx_setParameter(ZSTD_CCtx* cctx, ZSTD_cParameter param, unsigned value);
|
ZSTDLIB_API size_t ZSTD_CCtx_setParameter(ZSTD_CCtx* cctx, ZSTD_cParameter param, unsigned value);
|
||||||
|
|
||||||
|
/*! ZSTD_CCtx_getParameter() :
|
||||||
|
* Get the requested value of one compression parameter, selected by enum ZSTD_cParameter.
|
||||||
|
* @result : 0, or an error code (which can be tested with ZSTD_isError()).
|
||||||
|
*/
|
||||||
|
ZSTDLIB_API size_t ZSTD_CCtx_getParameter(ZSTD_CCtx* cctx, ZSTD_cParameter param, unsigned* value);
|
||||||
|
|
||||||
/*! ZSTD_CCtx_setPledgedSrcSize() :
|
/*! ZSTD_CCtx_setPledgedSrcSize() :
|
||||||
* Total input data size to be compressed as a single frame.
|
* Total input data size to be compressed as a single frame.
|
||||||
* This value will be controlled at the end, and result in error if not respected.
|
* This value will be controlled at the end, and result in error if not respected.
|
||||||
@ -1238,6 +1244,13 @@ ZSTDLIB_API size_t ZSTD_CCtxParams_init_advanced(ZSTD_CCtx_params* cctxParams, Z
|
|||||||
*/
|
*/
|
||||||
ZSTDLIB_API size_t ZSTD_CCtxParam_setParameter(ZSTD_CCtx_params* params, ZSTD_cParameter param, unsigned value);
|
ZSTDLIB_API size_t ZSTD_CCtxParam_setParameter(ZSTD_CCtx_params* params, ZSTD_cParameter param, unsigned value);
|
||||||
|
|
||||||
|
/*! ZSTD_CCtxParam_getParameter() :
|
||||||
|
* Similar to ZSTD_CCtx_getParameter.
|
||||||
|
* Get the requested value of one compression parameter, selected by enum ZSTD_cParameter.
|
||||||
|
* @result : 0, or an error code (which can be tested with ZSTD_isError()).
|
||||||
|
*/
|
||||||
|
ZSTDLIB_API size_t ZSTD_CCtxParam_getParameter(ZSTD_CCtx_params* params, ZSTD_cParameter param, unsigned* value);
|
||||||
|
|
||||||
/*! ZSTD_CCtx_setParametersUsingCCtxParams() :
|
/*! ZSTD_CCtx_setParametersUsingCCtxParams() :
|
||||||
* Apply a set of ZSTD_CCtx_params to the compression context.
|
* Apply a set of ZSTD_CCtx_params to the compression context.
|
||||||
* This can be done even after compression is started,
|
* This can be done even after compression is started,
|
||||||
|
@ -117,6 +117,13 @@ static unsigned FUZ_highbit32(U32 v32)
|
|||||||
#define CHECK(fn) { CHECK_V(err, fn); }
|
#define CHECK(fn) { CHECK_V(err, fn); }
|
||||||
#define CHECKPLUS(var, fn, more) { CHECK_V(var, fn); more; }
|
#define CHECKPLUS(var, fn, more) { CHECK_V(var, fn); more; }
|
||||||
|
|
||||||
|
#define CHECK_EQ(lhs, rhs) { \
|
||||||
|
if ((lhs) != (rhs)) { \
|
||||||
|
DISPLAY("Error L%u => %s != %s ", __LINE__, #lhs, #rhs); \
|
||||||
|
goto _output_error; \
|
||||||
|
} \
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*=============================================
|
/*=============================================
|
||||||
* Memory Tests
|
* Memory Tests
|
||||||
@ -394,6 +401,43 @@ static int basicUnitTests(U32 seed, double compressibility)
|
|||||||
}
|
}
|
||||||
DISPLAYLEVEL(3, "OK \n");
|
DISPLAYLEVEL(3, "OK \n");
|
||||||
|
|
||||||
|
DISPLAYLEVEL(3, "test%3d : ZSTD_CCtx_getParameter() : ", testNb++);
|
||||||
|
{ ZSTD_CCtx* const cctx = ZSTD_createCCtx();
|
||||||
|
ZSTD_outBuffer out = {NULL, 0, 0};
|
||||||
|
ZSTD_inBuffer in = {NULL, 0, 0};
|
||||||
|
unsigned value;
|
||||||
|
|
||||||
|
CHECK_Z(ZSTD_CCtx_getParameter(cctx, ZSTD_p_compressionLevel, &value));
|
||||||
|
CHECK_EQ(value, 3);
|
||||||
|
CHECK_Z(ZSTD_CCtx_getParameter(cctx, ZSTD_p_hashLog, &value));
|
||||||
|
CHECK_EQ(value, 0);
|
||||||
|
CHECK_Z(ZSTD_CCtx_setParameter(cctx, ZSTD_p_hashLog, ZSTD_HASHLOG_MIN));
|
||||||
|
CHECK_Z(ZSTD_CCtx_getParameter(cctx, ZSTD_p_compressionLevel, &value));
|
||||||
|
CHECK_EQ(value, 3);
|
||||||
|
CHECK_Z(ZSTD_CCtx_getParameter(cctx, ZSTD_p_hashLog, &value));
|
||||||
|
CHECK_EQ(value, ZSTD_HASHLOG_MIN);
|
||||||
|
CHECK_Z(ZSTD_CCtx_setParameter(cctx, ZSTD_p_compressionLevel, 7));
|
||||||
|
CHECK_Z(ZSTD_CCtx_getParameter(cctx, ZSTD_p_compressionLevel, &value));
|
||||||
|
CHECK_EQ(value, 7);
|
||||||
|
CHECK_Z(ZSTD_CCtx_getParameter(cctx, ZSTD_p_hashLog, &value));
|
||||||
|
CHECK_EQ(value, ZSTD_HASHLOG_MIN);
|
||||||
|
/* Start a compression job */
|
||||||
|
ZSTD_compress_generic(cctx, &out, &in, ZSTD_e_continue);
|
||||||
|
CHECK_Z(ZSTD_CCtx_getParameter(cctx, ZSTD_p_compressionLevel, &value));
|
||||||
|
CHECK_EQ(value, 7);
|
||||||
|
CHECK_Z(ZSTD_CCtx_getParameter(cctx, ZSTD_p_hashLog, &value));
|
||||||
|
CHECK_EQ(value, ZSTD_HASHLOG_MIN);
|
||||||
|
/* Reset the CCtx */
|
||||||
|
ZSTD_CCtx_reset(cctx);
|
||||||
|
CHECK_Z(ZSTD_CCtx_getParameter(cctx, ZSTD_p_compressionLevel, &value));
|
||||||
|
CHECK_EQ(value, 7);
|
||||||
|
CHECK_Z(ZSTD_CCtx_getParameter(cctx, ZSTD_p_hashLog, &value));
|
||||||
|
CHECK_EQ(value, ZSTD_HASHLOG_MIN);
|
||||||
|
|
||||||
|
ZSTD_freeCCtx(cctx);
|
||||||
|
}
|
||||||
|
DISPLAYLEVEL(3, "OK \n");
|
||||||
|
|
||||||
DISPLAYLEVEL(3, "test%3d : large window log smaller data : ", testNb++);
|
DISPLAYLEVEL(3, "test%3d : large window log smaller data : ", testNb++);
|
||||||
{ ZSTD_CCtx* const cctx = ZSTD_createCCtx();
|
{ ZSTD_CCtx* const cctx = ZSTD_createCCtx();
|
||||||
ZSTD_parameters params = ZSTD_getParams(1, ZSTD_CONTENTSIZE_UNKNOWN, 0);
|
ZSTD_parameters params = ZSTD_getParams(1, ZSTD_CONTENTSIZE_UNKNOWN, 0);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user