Enable amalgamation of lz4hc.c and lz4.c

This commit is contained in:
Bing Xu 2018-11-15 22:24:25 -08:00
parent 1b819bfd63
commit 17f5071e72
2 changed files with 30 additions and 16 deletions

View File

@ -32,6 +32,13 @@
- 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
@ -455,7 +462,13 @@ static const U32 LZ4_skipTrigger = 6; /* Increase this value ==> compression ru
/*-************************************ /*-************************************
* Local Structures and types * Local Structures and types
**************************************/ **************************************/
typedef enum { notLimited = 0, limitedOutput = 1, fillOutput = 2 } limitedOutput_directive; 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;
/** /**

View File

@ -61,10 +61,22 @@
# pragma clang diagnostic ignored "-Wunused-function" # pragma clang diagnostic ignored "-Wunused-function"
#endif #endif
#define LZ4_COMMONDEFS_ONLY /*=== Enums ===*/
#include "lz4.c" /* LZ4_count, constants, mem */ 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
#ifndef LZ4_SRC_INCLUDED
#include "lz4.c" /* LZ4_count, constants, mem */
#endif
/*=== Constants ===*/ /*=== Constants ===*/
#define OPTIMAL_ML (int)((ML_MASK-1)+MINMATCH) #define OPTIMAL_ML (int)((ML_MASK-1)+MINMATCH)
#define LZ4_OPT_NUM (1<<12) #define LZ4_OPT_NUM (1<<12)
@ -79,9 +91,6 @@
static U32 LZ4HC_hashPtr(const void* ptr) { return HASH_FUNCTION(LZ4_read32(ptr)); } static U32 LZ4HC_hashPtr(const void* ptr) { return HASH_FUNCTION(LZ4_read32(ptr)); }
/*=== Enums ===*/
typedef enum { noDictCtx, usingDictCtx } dictCtx_directive;
/************************************** /**************************************
* HC Compression * HC Compression
@ -346,7 +355,7 @@ LZ4HC_InsertAndGetWiderMatch (
} /* while ((matchIndex>=lowestMatchIndex) && (nbAttempts)) */ } /* while ((matchIndex>=lowestMatchIndex) && (nbAttempts)) */
if (dict == usingDictCtx && nbAttempts && ipIndex - lowestMatchIndex < MAX_DISTANCE) { if (dict == usingDictCtxHc && nbAttempts && ipIndex - lowestMatchIndex < MAX_DISTANCE) {
size_t const dictEndOffset = dictCtx->end - dictCtx->base; size_t const dictEndOffset = dictCtx->end - dictCtx->base;
U32 dictMatchIndex = dictCtx->hashTable[LZ4HC_hashPtr(ip)]; U32 dictMatchIndex = dictCtx->hashTable[LZ4HC_hashPtr(ip)];
assert(dictEndOffset <= 1 GB); assert(dictEndOffset <= 1 GB);
@ -394,14 +403,6 @@ int LZ4HC_InsertAndFindBestMatch(LZ4HC_CCtx_internal* const hc4, /* Index tabl
return LZ4HC_InsertAndGetWiderMatch(hc4, ip, ip, iLimit, MINMATCH-1, matchpos, &uselessPtr, maxNbAttempts, patternAnalysis, 0 /*chainSwap*/, dict, favorCompressionRatio); return LZ4HC_InsertAndGetWiderMatch(hc4, ip, ip, iLimit, MINMATCH-1, matchpos, &uselessPtr, maxNbAttempts, patternAnalysis, 0 /*chainSwap*/, dict, favorCompressionRatio);
} }
typedef enum {
noLimit = 0,
limitedOutput = 1,
limitedDestSize = 2
} limitedOutput_directive;
/* LZ4HC_encodeSequence() : /* LZ4HC_encodeSequence() :
* @return : 0 if ok, * @return : 0 if ok,
* 1 if buffer issue detected */ * 1 if buffer issue detected */
@ -800,7 +801,7 @@ static int LZ4HC_compress_generic_dictCtx (
ctx->compressionLevel = (short)cLevel; ctx->compressionLevel = (short)cLevel;
return LZ4HC_compress_generic_noDictCtx(ctx, src, dst, srcSizePtr, dstCapacity, cLevel, limit); return LZ4HC_compress_generic_noDictCtx(ctx, src, dst, srcSizePtr, dstCapacity, cLevel, limit);
} else { } else {
return LZ4HC_compress_generic_internal(ctx, src, dst, srcSizePtr, dstCapacity, cLevel, limit, usingDictCtx); return LZ4HC_compress_generic_internal(ctx, src, dst, srcSizePtr, dstCapacity, cLevel, limit, usingDictCtxHc);
} }
} }