unified limitedOutput_directive
between lz4.c and lz4hc.c . was left in a strange state after the "amalgamation" patch. Now only 3 directives remain, same name across both implementations, single definition place. Might allow some light simplification due to reduced nb of states possible.
This commit is contained in:
parent
799112b812
commit
474c17cdc4
31
lib/lz4.c
31
lib/lz4.c
@ -32,14 +32,6 @@
|
|||||||
- LZ4 source repository : https://github.com/lz4/lz4
|
- LZ4 source repository : https://github.com/lz4/lz4
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
|
||||||
* LZ4_SRC_INCLUDED:
|
|
||||||
* Amalgamation flag, whether lz4.c is included
|
|
||||||
*/
|
|
||||||
#ifndef LZ4_SRC_INCLUDED
|
|
||||||
# define LZ4_SRC_INCLUDED 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*-************************************
|
/*-************************************
|
||||||
* Tuning parameters
|
* Tuning parameters
|
||||||
**************************************/
|
**************************************/
|
||||||
@ -98,6 +90,14 @@
|
|||||||
/*-************************************
|
/*-************************************
|
||||||
* Dependency
|
* Dependency
|
||||||
**************************************/
|
**************************************/
|
||||||
|
/*
|
||||||
|
* LZ4_SRC_INCLUDED:
|
||||||
|
* Amalgamation flag, whether lz4.c is included
|
||||||
|
*/
|
||||||
|
#ifndef LZ4_SRC_INCLUDED
|
||||||
|
# define LZ4_SRC_INCLUDED 1
|
||||||
|
#endif
|
||||||
|
|
||||||
#define LZ4_STATIC_LINKING_ONLY
|
#define LZ4_STATIC_LINKING_ONLY
|
||||||
#define LZ4_DISABLE_DEPRECATE_WARNINGS /* due to LZ4_decompress_safe_withPrefix64k */
|
#define LZ4_DISABLE_DEPRECATE_WARNINGS /* due to LZ4_decompress_safe_withPrefix64k */
|
||||||
#include "lz4.h"
|
#include "lz4.h"
|
||||||
@ -177,7 +177,7 @@
|
|||||||
|
|
||||||
|
|
||||||
/*-************************************
|
/*-************************************
|
||||||
* Basic Types
|
* Types
|
||||||
**************************************/
|
**************************************/
|
||||||
#if defined(__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */)
|
#if defined(__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */)
|
||||||
# include <stdint.h>
|
# include <stdint.h>
|
||||||
@ -202,6 +202,12 @@
|
|||||||
typedef size_t reg_t; /* 32-bits in x32 mode */
|
typedef size_t reg_t; /* 32-bits in x32 mode */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
notLimited = 0,
|
||||||
|
limitedOutput = 1,
|
||||||
|
fillOutput = 2,
|
||||||
|
} limitedOutput_directive;
|
||||||
|
|
||||||
|
|
||||||
/*-************************************
|
/*-************************************
|
||||||
* Reading and writing into memory
|
* Reading and writing into memory
|
||||||
@ -549,13 +555,6 @@ static const U32 LZ4_skipTrigger = 6; /* Increase this value ==> compression ru
|
|||||||
/*-************************************
|
/*-************************************
|
||||||
* Local Structures and types
|
* Local Structures and types
|
||||||
**************************************/
|
**************************************/
|
||||||
typedef enum {
|
|
||||||
noLimit = 0,
|
|
||||||
notLimited = 1,
|
|
||||||
limitedOutput = 2,
|
|
||||||
fillOutput = 3,
|
|
||||||
limitedDestSize = 4
|
|
||||||
} limitedOutput_directive;
|
|
||||||
typedef enum { clearedTable = 0, byPtr, byU32, byU16 } tableType_t;
|
typedef enum { clearedTable = 0, byPtr, byU32, byU16 } tableType_t;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
31
lib/lz4hc.c
31
lib/lz4hc.c
@ -63,13 +63,6 @@
|
|||||||
|
|
||||||
/*=== Enums ===*/
|
/*=== Enums ===*/
|
||||||
typedef enum { noDictCtx, usingDictCtxHc } dictCtx_directive;
|
typedef enum { noDictCtx, usingDictCtxHc } dictCtx_directive;
|
||||||
#ifndef LZ4_SRC_INCLUDED
|
|
||||||
typedef enum {
|
|
||||||
noLimit = 0,
|
|
||||||
limitedOutput = 1,
|
|
||||||
limitedDestSize = 2
|
|
||||||
} limitedOutput_directive;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#define LZ4_COMMONDEFS_ONLY
|
#define LZ4_COMMONDEFS_ONLY
|
||||||
@ -512,7 +505,7 @@ LZ4_FORCE_INLINE int LZ4HC_compress_hashChain (
|
|||||||
|
|
||||||
/* init */
|
/* init */
|
||||||
*srcSizePtr = 0;
|
*srcSizePtr = 0;
|
||||||
if (limit == limitedDestSize) oend -= LASTLITERALS; /* Hack for support LZ4 format restriction */
|
if (limit == fillOutput) oend -= LASTLITERALS; /* Hack for support LZ4 format restriction */
|
||||||
if (inputSize < LZ4_minLength) goto _last_literals; /* Input too small, no compression (all literals) */
|
if (inputSize < LZ4_minLength) goto _last_literals; /* Input too small, no compression (all literals) */
|
||||||
|
|
||||||
/* Main Loop */
|
/* Main Loop */
|
||||||
@ -659,7 +652,7 @@ _last_literals:
|
|||||||
{ size_t lastRunSize = (size_t)(iend - anchor); /* literals */
|
{ size_t lastRunSize = (size_t)(iend - anchor); /* literals */
|
||||||
size_t litLength = (lastRunSize + 255 - RUN_MASK) / 255;
|
size_t litLength = (lastRunSize + 255 - RUN_MASK) / 255;
|
||||||
size_t const totalSize = 1 + litLength + lastRunSize;
|
size_t const totalSize = 1 + litLength + lastRunSize;
|
||||||
if (limit == limitedDestSize) oend += LASTLITERALS; /* restore correct value */
|
if (limit == fillOutput) oend += LASTLITERALS; /* restore correct value */
|
||||||
if (limit && (op + totalSize > oend)) {
|
if (limit && (op + totalSize > oend)) {
|
||||||
if (limit == limitedOutput) return 0; /* Check output limit */
|
if (limit == limitedOutput) return 0; /* Check output limit */
|
||||||
/* adapt lastRunSize to fill 'dest' */
|
/* adapt lastRunSize to fill 'dest' */
|
||||||
@ -686,7 +679,7 @@ _last_literals:
|
|||||||
return (int) (((char*)op)-dest);
|
return (int) (((char*)op)-dest);
|
||||||
|
|
||||||
_dest_overflow:
|
_dest_overflow:
|
||||||
if (limit == limitedDestSize) {
|
if (limit == fillOutput) {
|
||||||
op = optr; /* restore correct out pointer */
|
op = optr; /* restore correct out pointer */
|
||||||
goto _last_literals;
|
goto _last_literals;
|
||||||
}
|
}
|
||||||
@ -738,7 +731,7 @@ LZ4_FORCE_INLINE int LZ4HC_compress_generic_internal (
|
|||||||
|
|
||||||
DEBUGLOG(4, "LZ4HC_compress_generic(ctx=%p, src=%p, srcSize=%d)", ctx, src, *srcSizePtr);
|
DEBUGLOG(4, "LZ4HC_compress_generic(ctx=%p, src=%p, srcSize=%d)", ctx, src, *srcSizePtr);
|
||||||
|
|
||||||
if (limit == limitedDestSize && dstCapacity < 1) return 0; /* Impossible to store anything */
|
if (limit == fillOutput && dstCapacity < 1) return 0; /* Impossible to store anything */
|
||||||
if ((U32)*srcSizePtr > (U32)LZ4_MAX_INPUT_SIZE) return 0; /* Unsupported input size (too large or negative) */
|
if ((U32)*srcSizePtr > (U32)LZ4_MAX_INPUT_SIZE) return 0; /* Unsupported input size (too large or negative) */
|
||||||
|
|
||||||
ctx->end += *srcSizePtr;
|
ctx->end += *srcSizePtr;
|
||||||
@ -855,7 +848,7 @@ int LZ4_compress_HC_extStateHC_fastReset (void* state, const char* src, char* ds
|
|||||||
if (dstCapacity < LZ4_compressBound(srcSize))
|
if (dstCapacity < LZ4_compressBound(srcSize))
|
||||||
return LZ4HC_compress_generic (ctx, src, dst, &srcSize, dstCapacity, compressionLevel, limitedOutput);
|
return LZ4HC_compress_generic (ctx, src, dst, &srcSize, dstCapacity, compressionLevel, limitedOutput);
|
||||||
else
|
else
|
||||||
return LZ4HC_compress_generic (ctx, src, dst, &srcSize, dstCapacity, compressionLevel, noLimit);
|
return LZ4HC_compress_generic (ctx, src, dst, &srcSize, dstCapacity, compressionLevel, notLimited);
|
||||||
}
|
}
|
||||||
|
|
||||||
int LZ4_compress_HC_extStateHC (void* state, const char* src, char* dst, int srcSize, int dstCapacity, int compressionLevel)
|
int LZ4_compress_HC_extStateHC (void* state, const char* src, char* dst, int srcSize, int dstCapacity, int compressionLevel)
|
||||||
@ -887,7 +880,7 @@ int LZ4_compress_HC_destSize(void* state, const char* source, char* dest, int* s
|
|||||||
if (ctx==NULL) return 0; /* init failure */
|
if (ctx==NULL) return 0; /* init failure */
|
||||||
LZ4HC_init_internal(&ctx->internal_donotuse, (const BYTE*) source);
|
LZ4HC_init_internal(&ctx->internal_donotuse, (const BYTE*) source);
|
||||||
LZ4_setCompressionLevel(ctx, cLevel);
|
LZ4_setCompressionLevel(ctx, cLevel);
|
||||||
return LZ4HC_compress_generic(&ctx->internal_donotuse, source, dest, sourceSizePtr, targetDestSize, cLevel, limitedDestSize);
|
return LZ4HC_compress_generic(&ctx->internal_donotuse, source, dest, sourceSizePtr, targetDestSize, cLevel, fillOutput);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1056,12 +1049,12 @@ int LZ4_compress_HC_continue (LZ4_streamHC_t* LZ4_streamHCPtr, const char* src,
|
|||||||
if (dstCapacity < LZ4_compressBound(srcSize))
|
if (dstCapacity < LZ4_compressBound(srcSize))
|
||||||
return LZ4_compressHC_continue_generic (LZ4_streamHCPtr, src, dst, &srcSize, dstCapacity, limitedOutput);
|
return LZ4_compressHC_continue_generic (LZ4_streamHCPtr, src, dst, &srcSize, dstCapacity, limitedOutput);
|
||||||
else
|
else
|
||||||
return LZ4_compressHC_continue_generic (LZ4_streamHCPtr, src, dst, &srcSize, dstCapacity, noLimit);
|
return LZ4_compressHC_continue_generic (LZ4_streamHCPtr, src, dst, &srcSize, dstCapacity, notLimited);
|
||||||
}
|
}
|
||||||
|
|
||||||
int LZ4_compress_HC_continue_destSize (LZ4_streamHC_t* LZ4_streamHCPtr, const char* src, char* dst, int* srcSizePtr, int targetDestSize)
|
int LZ4_compress_HC_continue_destSize (LZ4_streamHC_t* LZ4_streamHCPtr, const char* src, char* dst, int* srcSizePtr, int targetDestSize)
|
||||||
{
|
{
|
||||||
return LZ4_compressHC_continue_generic(LZ4_streamHCPtr, src, dst, srcSizePtr, targetDestSize, limitedDestSize);
|
return LZ4_compressHC_continue_generic(LZ4_streamHCPtr, src, dst, srcSizePtr, targetDestSize, fillOutput);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1137,7 +1130,7 @@ int LZ4_freeHC (void* LZ4HC_Data)
|
|||||||
|
|
||||||
int LZ4_compressHC2_continue (void* LZ4HC_Data, const char* src, char* dst, int srcSize, int cLevel)
|
int LZ4_compressHC2_continue (void* LZ4HC_Data, const char* src, char* dst, int srcSize, int cLevel)
|
||||||
{
|
{
|
||||||
return LZ4HC_compress_generic (&((LZ4_streamHC_t*)LZ4HC_Data)->internal_donotuse, src, dst, &srcSize, 0, cLevel, noLimit);
|
return LZ4HC_compress_generic (&((LZ4_streamHC_t*)LZ4HC_Data)->internal_donotuse, src, dst, &srcSize, 0, cLevel, notLimited);
|
||||||
}
|
}
|
||||||
|
|
||||||
int LZ4_compressHC2_limitedOutput_continue (void* LZ4HC_Data, const char* src, char* dst, int srcSize, int dstCapacity, int cLevel)
|
int LZ4_compressHC2_limitedOutput_continue (void* LZ4HC_Data, const char* src, char* dst, int srcSize, int dstCapacity, int cLevel)
|
||||||
@ -1247,7 +1240,7 @@ static int LZ4HC_compress_optimal ( LZ4HC_CCtx_internal* ctx,
|
|||||||
/* init */
|
/* init */
|
||||||
DEBUGLOG(5, "LZ4HC_compress_optimal(dst=%p, dstCapa=%u)", dst, (unsigned)dstCapacity);
|
DEBUGLOG(5, "LZ4HC_compress_optimal(dst=%p, dstCapa=%u)", dst, (unsigned)dstCapacity);
|
||||||
*srcSizePtr = 0;
|
*srcSizePtr = 0;
|
||||||
if (limit == limitedDestSize) oend -= LASTLITERALS; /* Hack for support LZ4 format restriction */
|
if (limit == fillOutput) oend -= LASTLITERALS; /* Hack for support LZ4 format restriction */
|
||||||
if (sufficient_len >= LZ4_OPT_NUM) sufficient_len = LZ4_OPT_NUM-1;
|
if (sufficient_len >= LZ4_OPT_NUM) sufficient_len = LZ4_OPT_NUM-1;
|
||||||
|
|
||||||
/* Main Loop */
|
/* Main Loop */
|
||||||
@ -1447,7 +1440,7 @@ static int LZ4HC_compress_optimal ( LZ4HC_CCtx_internal* ctx,
|
|||||||
{ size_t lastRunSize = (size_t)(iend - anchor); /* literals */
|
{ size_t lastRunSize = (size_t)(iend - anchor); /* literals */
|
||||||
size_t litLength = (lastRunSize + 255 - RUN_MASK) / 255;
|
size_t litLength = (lastRunSize + 255 - RUN_MASK) / 255;
|
||||||
size_t const totalSize = 1 + litLength + lastRunSize;
|
size_t const totalSize = 1 + litLength + lastRunSize;
|
||||||
if (limit == limitedDestSize) oend += LASTLITERALS; /* restore correct value */
|
if (limit == fillOutput) oend += LASTLITERALS; /* restore correct value */
|
||||||
if (limit && (op + totalSize > oend)) {
|
if (limit && (op + totalSize > oend)) {
|
||||||
if (limit == limitedOutput) return 0; /* Check output limit */
|
if (limit == limitedOutput) return 0; /* Check output limit */
|
||||||
/* adapt lastRunSize to fill 'dst' */
|
/* adapt lastRunSize to fill 'dst' */
|
||||||
@ -1474,7 +1467,7 @@ static int LZ4HC_compress_optimal ( LZ4HC_CCtx_internal* ctx,
|
|||||||
return (int) ((char*)op-dst);
|
return (int) ((char*)op-dst);
|
||||||
|
|
||||||
_dest_overflow:
|
_dest_overflow:
|
||||||
if (limit == limitedDestSize) {
|
if (limit == fillOutput) {
|
||||||
op = opSaved; /* restore correct out pointer */
|
op = opSaved; /* restore correct out pointer */
|
||||||
goto _last_literals;
|
goto _last_literals;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user