50#define ACCELERATION_DEFAULT 1 
   60#if defined(_MSC_VER) && defined(_WIN32_WCE)    
   61#  define MLZ4_FORCE_SW_BITCOUNT 
   75#  define FORCE_INLINE static __forceinline 
   77#  pragma warning(disable : 4127)         
   78#  pragma warning(disable : 4293)         
   80#  if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)    
   81#    if defined(__GNUC__) || defined(__clang__) 
   82#      define FORCE_INLINE static inline __attribute__((always_inline)) 
   84#      define FORCE_INLINE static inline 
   87#    define FORCE_INLINE static 
   92#if (MLZ4_GCC_VERSION >= 302) || (__INTEL_COMPILER >= 800) || defined(__clang__) 
   93#  define expect(expr,value)    (__builtin_expect ((expr),(value)) ) 
   95#  define expect(expr,value)    (expr) 
   98#define likely(expr)     expect((expr) != 0, 1) 
   99#define unlikely(expr)   expect((expr) != 0, 0) 
  106#define ALLOCATOR(n,s) calloc(n,s) 
  109#define MEM_INIT       memset 
  115#if defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)    
  117  typedef  uint8_t 
BYTE;
 
  118  typedef uint16_t 
U16;
 
  119  typedef uint32_t 
U32;
 
  121  typedef uint64_t 
U64;
 
  124  typedef unsigned short      U16;
 
  127  typedef unsigned long long  U64;
 
  134#define STEPSIZE sizeof(size_t) 
  140    const union { 
U32 i; 
BYTE c[4]; } 
one = { 1 };   
 
 
  148    memcpy(&val16, memPtr, 2);
 
 
  160        const BYTE* p = (
const BYTE*)memPtr;
 
  161        return (
U16)((
U16)p[0] + (p[1]<<8));
 
 
  169        memcpy(memPtr, &value, 2);
 
  175        p[1] = (
BYTE)(value>>8);
 
 
  182    memcpy(&val32, memPtr, 4);
 
 
  189    memcpy(&val64, memPtr, 8);
 
 
  202static void MLZ4_copy4(
void* dstPtr, 
const void* srcPtr) { memcpy(dstPtr, srcPtr, 4); }
 
  204static void MLZ4_copy8(
void* dstPtr, 
const void* srcPtr) { memcpy(dstPtr, srcPtr, 8); }
 
  210    const BYTE* s = (
const BYTE*)srcPtr;
 
  212    do { 
MLZ4_copy8(d,s); d+=8; s+=8; } 
while (d<e);
 
 
  222#define LASTLITERALS 5 
  223#define MFLIMIT (COPYLENGTH+MINMATCH) 
  231#define MAX_DISTANCE ((1 << MAXD_LOG) - 1) 
  234#define ML_MASK  ((1U<<ML_BITS)-1) 
  235#define RUN_BITS (8-ML_BITS) 
  236#define RUN_MASK ((1U<<RUN_BITS)-1) 
  242#define MLZ4_STATIC_ASSERT(c)    { enum { MLZ4_static_assert = 1/(int)(!!(c)) }; }    
  254#       if defined(_MSC_VER) && defined(_WIN64) && !defined(MLZ4_FORCE_SW_BITCOUNT) 
  256            _BitScanForward64( &r, (
U64)val );
 
  258#       elif (defined(__clang__) || (MLZ4_GCC_VERSION >= 304)) && !defined(MLZ4_FORCE_SW_BITCOUNT) 
  259            return (__builtin_ctzll((
U64)val) >> 3);
 
  261            static const int DeBruijnBytePos[64] = { 0, 0, 0, 0, 0, 1, 1, 2, 0, 3, 1, 3, 1, 4, 2, 7, 0, 2, 3, 6, 1, 5, 3, 5, 1, 3, 4, 4, 2, 5, 6, 7, 7, 0, 1, 2, 3, 3, 4, 6, 2, 6, 5, 5, 3, 4, 5, 6, 7, 1, 2, 4, 6, 4, 4, 5, 7, 2, 6, 5, 7, 6, 7, 7 };
 
  262            return DeBruijnBytePos[((
U64)((val & -(
long long)val) * 0x0218A392CDABBD3FULL)) >> 58];
 
  267#       if defined(_MSC_VER) && !defined(MLZ4_FORCE_SW_BITCOUNT) 
  269            _BitScanForward( &r, (
U32)val );
 
  271#       elif (defined(__clang__) || (MLZ4_GCC_VERSION >= 304)) && !defined(MLZ4_FORCE_SW_BITCOUNT) 
  272            return (__builtin_ctz((
U32)val) >> 3);
 
  274            static const int DeBruijnBytePos[32] = { 0, 0, 3, 0, 3, 1, 3, 0, 3, 2, 2, 1, 3, 2, 0, 1, 3, 3, 1, 2, 2, 2, 2, 0, 3, 1, 2, 0, 1, 0, 1, 1 };
 
  275            return DeBruijnBytePos[((
U32)((val & -(
S32)val) * 0x077CB531U)) >> 27];
 
  283#       if defined(_MSC_VER) && defined(_WIN64) && !defined(MLZ4_FORCE_SW_BITCOUNT) 
  285            _BitScanReverse64( &r, val );
 
  286            return (
unsigned)(r>>3);
 
  287#       elif (defined(__clang__) || (MLZ4_GCC_VERSION >= 304)) && !defined(MLZ4_FORCE_SW_BITCOUNT) 
  288            return (__builtin_clzll((
U64)val) >> 3);
 
  291            if (!(val>>32)) { r=4; } 
else { r=0; val>>=32; }
 
  292            if (!(val>>16)) { r+=2; val>>=8; } 
else { val>>=24; }
 
  299#       if defined(_MSC_VER) && !defined(MLZ4_FORCE_SW_BITCOUNT) 
  301            _BitScanReverse( &r, (
unsigned long)val );
 
  302            return (
unsigned)(r>>3);
 
  303#       elif (defined(__clang__) || (MLZ4_GCC_VERSION >= 304)) && !defined(MLZ4_FORCE_SW_BITCOUNT) 
  304            return (__builtin_clz((
U32)val) >> 3);
 
  307            if (!(val>>16)) { r=2; val>>=8; } 
else { r=0; val>>=24; }
 
 
  317    const BYTE* 
const pStart = pIn;
 
  324        return (
unsigned)(pIn - pStart);
 
  329    if ((pIn<pInLimit) && (*pMatch == *pIn)) pIn++;
 
  330    return (
unsigned)(pIn - pStart);
 
 
  334#ifndef MLZ4_COMMONDEFS_ONLY 
  338#define MLZ4_HASHLOG   (MLZ4_MEMORY_USAGE-2) 
  339#define HASHTABLESIZE (1 << MLZ4_MEMORY_USAGE) 
  340#define HASH_SIZE_U32 (1 << MLZ4_HASHLOG)        
  383    if (tableType == 
byU16)
 
 
  393    const U32 hashMask = (1<<hashLog) - 1;
 
  394    return ((sequence * 
prime5bytes) >> (40 - hashLog)) & hashMask;
 
 
  410    case byPtr: { 
const BYTE** hashTable = (
const BYTE**)tableBase; hashTable[h] = p; 
return; }
 
  411    case byU32: { 
U32* hashTable = (
U32*) tableBase; hashTable[h] = (
U32)(p-srcBase); 
return; }
 
  412    case byU16: { 
U16* hashTable = (
U16*) tableBase; hashTable[h] = (
U16)(p-srcBase); 
return; }
 
 
  424    if (tableType == 
byPtr) { 
const BYTE** hashTable = (
const BYTE**) tableBase; 
return hashTable[h]; }
 
  425    if (tableType == 
byU32) { 
U32* hashTable = (
U32*) tableBase; 
return hashTable[h] + srcBase; }
 
  426    { 
U16* hashTable = (
U16*) tableBase; 
return hashTable[h] + srcBase; }   
 
 
  445                 const U32 acceleration)
 
  451    const BYTE* lowLimit;
 
  454    const BYTE* 
const dictEnd = dictionary + dictPtr->
dictSize;
 
  455    const size_t dictDelta = dictEnd - (
const BYTE*)
source;
 
  498            const BYTE* forwardIp = ip;
 
  509                if (
unlikely(forwardIp > mflimit)) 
goto _last_literals;
 
  516                        refDelta = dictDelta;
 
  517                        lowLimit = dictionary;
 
  528            } 
while ( ((dictIssue==
dictSmall) ? (match < lowRefLimit) : 0)
 
  534        while ((ip>anchor) && (match+refDelta > lowLimit) && (
unlikely(ip[-1]==match[refDelta-1]))) { ip--; match--; }
 
  538            unsigned litLength = (unsigned)(ip - anchor);
 
  540            if ((outputLimited) && (
unlikely(op + litLength + (2 + 1 + 
LASTLITERALS) + (litLength/255) > olimit)))
 
  546                for(; len >= 255 ; len-=255) *op++ = 255;
 
  562            unsigned matchLength;
 
  568                limit = ip + (dictEnd-match);
 
  569                if (limit > matchlimit) limit = matchlimit;
 
  591                for (; matchLength >= 510 ; matchLength-=510) { *op++ = 255; *op++ = 255; }
 
  592                if (matchLength >= 255) { matchLength-=255; *op++ = 255; }
 
  593                *op++ = (
BYTE)matchLength;
 
  595            else *token += (
BYTE)(matchLength);
 
  601        if (ip > mflimit) 
break;
 
  612                refDelta = dictDelta;
 
  613                lowLimit = dictionary;
 
  622        if ( ((dictIssue==
dictSmall) ? (match>=lowRefLimit) : 1)
 
  625        { token=op++; *token=0; 
goto _next_match; }
 
  634        const size_t lastRun = (size_t)(iend - anchor);
 
  639            size_t accumulator = lastRun - 
RUN_MASK;
 
  641            for(; accumulator >= 255 ; accumulator-=255) *op++ = 255;
 
  642            *op++ = (
BYTE) accumulator;
 
  648        memcpy(op, anchor, lastRun);
 
  653    return (
int) (((
char*)op)-
dest);
 
 
  724                 const char* 
const src,
 
  726                       int*  
const srcSizePtr,
 
  727                 const int targetDstSize,
 
  731    const BYTE* base = (
const BYTE*) src;
 
  732    const BYTE* lowLimit = (
const BYTE*) src;
 
  733    const BYTE* anchor = ip;
 
  734    const BYTE* 
const iend = ip + *srcSizePtr;
 
  739    BYTE* 
const oend = op + targetDstSize;
 
  740    BYTE* 
const oMaxLit = op + targetDstSize - 2  - 8  - 1 ;
 
  742    BYTE* 
const oMaxSeq = oMaxLit - 1 ;
 
  748    if (targetDstSize < 1) 
return 0;                                     
 
  764            const BYTE* forwardIp = ip;
 
  787        while ((ip>anchor) && (match > lowLimit) && (
unlikely(ip[-1]==match[-1]))) { ip--; match--; }
 
  791            unsigned litLength = (unsigned)(ip - anchor);
 
  793            if (op + ((litLength+240)/255) + litLength > oMaxLit)
 
  801                unsigned len = litLength - 
RUN_MASK;
 
  803                for(; len >= 255 ; len-=255) *op++ = 255;
 
  823            if (op + ((matchLength+240)/255) > oMaxMatch)
 
  826                matchLength = (15-1) + (oMaxMatch-op) * 255;
 
  835                while (matchLength >= 255) { matchLength-=255; *op++ = 255; }
 
  836                *op++ = (
BYTE)matchLength;
 
  838            else *token += (
BYTE)(matchLength);
 
  844        if (ip > mflimit) 
break;
 
  845        if (op > oMaxSeq) 
break;
 
  855        { token=op++; *token=0; 
goto _next_match; }
 
  864        size_t lastRunSize = (size_t)(iend - anchor);
 
  865        if (op + 1  + ((lastRunSize+240)/255)  + lastRunSize  > oend)
 
  868            lastRunSize  = (oend-op) - 1;
 
  869            lastRunSize -= (lastRunSize+240)/255;
 
  871        ip = anchor + lastRunSize;
 
  875            size_t accumulator = lastRunSize - 
RUN_MASK;
 
  877            for(; accumulator >= 255 ; accumulator-=255) *op++ = 255;
 
  878            *op++ = (
BYTE) accumulator;
 
  884        memcpy(op, anchor, lastRunSize);
 
  889    *srcSizePtr = (int) (((
const char*)ip)-src);
 
  890    return (
int) (((
char*)op)-
dst);
 
 
  918    void* ctx = &ctxBody;
 
 
  955#define HASH_UNIT sizeof(size_t) 
  959    const BYTE* p = (
const BYTE*)dictionary;
 
  960    const BYTE* 
const dictEnd = p + dictSize;
 
  973    if ((dictEnd - p) > 64 
KB) p = dictEnd - 64 
KB;
 
 
 1018    if ((streamPtr->
dictSize>0) && (smallest>dictEnd)) smallest = dictEnd;
 
 1025        if ((sourceEnd > streamPtr->
dictionary) && (sourceEnd < dictEnd))
 
 
 1069    const BYTE* smallest = dictEnd;
 
 
 1088    if ((
U32)dictSize > 64 
KB) dictSize = 64 
KB;   
 
 1091    memmove(safeBuffer, previousDictEnd - dictSize, dictSize);
 
 
 1111                 const char* 
const source,
 
 1117                 int partialDecoding,    
 
 1118                 int targetOutputSize,   
 
 1120                 const BYTE* 
const lowPrefix,  
 
 1121                 const BYTE* 
const dictStart,  
 
 1122                 const size_t dictSize         
 
 1130    BYTE* 
const oend = op + outputSize;
 
 1132    BYTE* oexit = op + targetOutputSize;
 
 1133    const BYTE* 
const lowLimit = lowPrefix - dictSize;
 
 1135    const BYTE* 
const dictEnd = (
const BYTE*)dictStart + dictSize;
 
 1136    const size_t dec32table[] = {4, 1, 2, 1, 4, 4, 4, 4};
 
 1137    const size_t dec64table[] = {0, 0, 0, (size_t)-1, 0, 1, 2, 3};
 
 1140    const int checkOffset = ((safeDecode) && (dictSize < (
int)(64 
KB)));
 
 1144    if ((partialDecoding) && (oexit> oend-
MFLIMIT)) oexit = oend-
MFLIMIT;                         
 
 1145    if ((endOnInput) && (
unlikely(outputSize==0))) 
return ((
inputSize==1) && (*ip==0)) ? 0 : -1;  
 
 1146    if ((!endOnInput) && (
unlikely(outputSize==0))) 
return (*ip==0?1:-1);
 
 1167            if ((safeDecode) && 
unlikely((
size_t)(op+length)<(
size_t)(op))) 
goto _output_error;   
 
 1168            if ((safeDecode) && 
unlikely((
size_t)(ip+length)<(
size_t)(ip))) 
goto _output_error;   
 
 1173        if (((endOnInput) && ((cpy>(partialDecoding?oexit:oend-
MFLIMIT)) || (ip+length>iend-(2+1+
LASTLITERALS))) )
 
 1176            if (partialDecoding)
 
 1178                if (cpy > oend) 
goto _output_error;                           
 
 1179                if ((endOnInput) && (ip+length > iend)) 
goto _output_error;   
 
 1183                if ((!endOnInput) && (cpy != oend)) 
goto _output_error;       
 
 1184                if ((endOnInput) && ((ip+length != iend) || (cpy > oend))) 
goto _output_error;   
 
 1186            memcpy(op, ip, length);
 
 1192        ip += length; op = cpy;
 
 1196        if ((checkOffset) && (
unlikely(match < lowLimit))) 
goto _output_error;   
 
 1205                if ((endOnInput) && (ip > iend-
LASTLITERALS)) 
goto _output_error;
 
 1209            if ((safeDecode) && 
unlikely((
size_t)(op+length)<(
size_t)op)) 
goto _output_error;   
 
 1218            if (length <= (
size_t)(lowPrefix-match))
 
 1221                match = dictEnd - (lowPrefix-match);
 
 1222                memmove(op, match, length); op += length;
 
 1227                size_t copySize = (size_t)(lowPrefix-match);
 
 1228                memcpy(op, dictEnd - copySize, copySize);
 
 1230                copySize = length - copySize;
 
 1231                if (copySize > (
size_t)(op-lowPrefix))   
 
 1233                    BYTE* 
const endOfMatch = op + copySize;
 
 1234                    const BYTE* copyFrom = lowPrefix;
 
 1235                    while (op < endOfMatch) *op++ = *copyFrom++;
 
 1239                    memcpy(op, lowPrefix, copySize);
 
 1250            const size_t dec64 = dec64table[op-match];
 
 1255            match += dec32table[op-match];
 
 1257            op += 8; match -= dec64;
 
 1258        } 
else { 
MLZ4_copy8(op, match); op+=8; match+=8; }
 
 1266                match += (oend-8) - op;
 
 1269            while (op<cpy) *op++ = *match++;
 
 1278       return (
int) (((
char*)op)-
dest);     
 
 1280       return (
int) (((
const char*)ip)-
source);   
 
 1284    return (
int) (-(((
const char*)ip)-
source))-1;
 
 
 1290    return MLZ4_decompress_generic(
source, 
dest, 
compressedSize, maxDecompressedSize, 
endOnInputSize, 
full, 0, 
noDict, (
BYTE*)
dest, NULL, 0);
 
 
 1295    return MLZ4_decompress_generic(
source, 
dest, 
compressedSize, maxDecompressedSize, 
endOnInputSize, 
partial, targetOutputSize, 
noDict, (
BYTE*)
dest, NULL, 0);
 
 
 1300    return MLZ4_decompress_generic(
source, 
dest, 0, 
originalSize, 
endOnOutputSize, 
full, 0, 
withPrefix64k, (
BYTE*)(
dest - 64 
KB), NULL, 64 
KB);
 
 
 1365        if (result <= 0) 
return result;
 
 1376        if (result <= 0) 
return result;
 
 
 1394        if (result <= 0) 
return result;
 
 1405        if (result <= 0) 
return result;
 
 
 1424        return MLZ4_decompress_generic(
source, 
dest, 
compressedSize, 
maxOutputSize, safe, 
full, 0, 
noDict, (
BYTE*)
dest, NULL, 0);
 
 1425    if (dictStart+dictSize == 
dest)
 
 1427        if (dictSize >= (
int)(64 
KB - 1))
 
 1428            return MLZ4_decompress_generic(
source, 
dest, 
compressedSize, 
maxOutputSize, safe, 
full, 0, 
withPrefix64k, (
BYTE*)
dest-64 
KB, NULL, 0);
 
 1429        return MLZ4_decompress_generic(
source, 
dest, 
compressedSize, 
maxOutputSize, safe, 
full, 0, 
noDict, (
BYTE*)
dest-dictSize, NULL, 0);
 
 1431    return MLZ4_decompress_generic(
source, 
dest, 
compressedSize, 
maxOutputSize, safe, 
full, 0, 
usingExtDict, (
BYTE*)
dest, (
const BYTE*)dictStart, dictSize);
 
 
 1447    return MLZ4_decompress_generic(
source, 
dest, 
compressedSize, 
maxOutputSize, 
endOnInputSize, 
full, 0, 
usingExtDict, (
BYTE*)
dest, (
const BYTE*)dictStart, dictSize);
 
 
 1484    if ((((
size_t)state) & 3) != 0) 
return 1;   
 
 
 1507    return MLZ4_decompress_generic(
source, 
dest, 
compressedSize, 
maxOutputSize, 
endOnInputSize, 
full, 0, 
withPrefix64k, (
BYTE*)
dest - 64 
KB, NULL, 64 
KB);
 
 
 1512    return MLZ4_decompress_generic(
source, 
dest, 0, 
originalSize, 
endOnOutputSize, 
full, 0, 
withPrefix64k, (
BYTE*)
dest - 64 
KB, NULL, 64 
KB);
 
 
#define MLZ4_STREAMSIZE_U64
#define MLZ4_VERSION_NUMBER
#define MLZ4_COMPRESSBOUND(isize)
#define MLZ4_MAX_INPUT_SIZE
const char char int int maxOutputSize
const char char int inputSize
#define MLZ4_STATIC_ASSERT(c)
void MLZ4_resetStream(MLZ4_stream_t *MLZ4_stream)
int MLZ4_compress_limitedOutput_continue(MLZ4_stream_t *MLZ4_stream, const char *src, char *dst, int srcSize, int maxDstSize)
int MLZ4_decompress_safe_usingDict(const char *source, char *dest, int compressedSize, int maxOutputSize, const char *dictStart, int dictSize)
static unsigned MLZ4_64bits(void)
static unsigned MLZ4_count(const BYTE *pIn, const BYTE *pMatch, const BYTE *pInLimit)
static U64 MLZ4_read64(const void *memPtr)
static void MLZ4_putPosition(const BYTE *p, void *tableBase, tableType_t tableType, const BYTE *srcBase)
int MLZ4_compress_destSize(const char *src, char *dst, int *srcSizePtr, int targetDstSize)
MLZ4_stream_t * MLZ4_createStream(void)
#define ACCELERATION_DEFAULT
int MLZ4_compress_withState(void *state, const char *src, char *dst, int srcSize)
int MLZ4_decompress_safe_partial(const char *source, char *dest, int compressedSize, int targetOutputSize, int maxDecompressedSize)
static int MLZ4_compress_destSize_extState(void *state, const char *src, char *dst, int *srcSizePtr, int targetDstSize)
int MLZ4_decompress_fast(const char *source, char *dest, int originalSize)
void * MLZ4_create(char *inputBuffer)
static void MLZ4_copy4(void *dstPtr, const void *srcPtr)
static U32 MLZ4_hashSequence(U32 sequence, tableType_t const tableType)
int MLZ4_compress_forceExtDict(MLZ4_stream_t *MLZ4_dict, const char *source, char *dest, int inputSize)
FORCE_INLINE int MLZ4_decompress_generic(const char *const source, char *const dest, int inputSize, int outputSize, int endOnInput, int partialDecoding, int targetOutputSize, int dict, const BYTE *const lowPrefix, const BYTE *const dictStart, const size_t dictSize)
int MLZ4_compress_fast_force(const char *source, char *dest, int inputSize, int maxOutputSize, int acceleration)
int MLZ4_decompress_safe(const char *source, char *dest, int compressedSize, int maxDecompressedSize)
static const U32 MLZ4_skipTrigger
int MLZ4_freeStreamDecode(MLZ4_streamDecode_t *MLZ4_stream)
int MLZ4_resetStreamState(void *state, char *inputBuffer)
static void MLZ4_writeLE16(void *memPtr, U16 value)
int MLZ4_decompress_safe_continue(MLZ4_streamDecode_t *MLZ4_streamDecode, const char *source, char *dest, int compressedSize, int maxOutputSize)
static unsigned MLZ4_isLittleEndian(void)
int MLZ4_uncompress_unknownOutputSize(const char *source, char *dest, int isize, int maxOutputSize)
static void MLZ4_copy8(void *dstPtr, const void *srcPtr)
int MLZ4_setStreamDecode(MLZ4_streamDecode_t *MLZ4_streamDecode, const char *dictionary, int dictSize)
int MLZ4_compress_limitedOutput(const char *source, char *dest, int inputSize, int maxOutputSize)
int MLZ4_decompress_fast_continue(MLZ4_streamDecode_t *MLZ4_streamDecode, const char *source, char *dest, int originalSize)
int MLZ4_loadDict(MLZ4_stream_t *MLZ4_dict, const char *dictionary, int dictSize)
static U16 MLZ4_read16(const void *memPtr)
MLZ4_streamDecode_t * MLZ4_createStreamDecode(void)
int MLZ4_decompress_safe_withPrefix64k(const char *source, char *dest, int compressedSize, int maxOutputSize)
int MLZ4_compress_fast(const char *source, char *dest, int inputSize, int maxOutputSize, int acceleration)
char * MLZ4_slideInputBuffer(void *MLZ4_Data)
int MLZ4_versionNumber(void)
static U32 MLZ4_hashSequence64(size_t sequence, tableType_t const tableType)
int MLZ4_compress_fast_extState(void *state, const char *source, char *dest, int inputSize, int maxOutputSize, int acceleration)
static U32 MLZ4_read32(const void *memPtr)
static const BYTE * MLZ4_getPositionOnHash(U32 h, void *tableBase, tableType_t tableType, const BYTE *srcBase)
int MLZ4_decompress_fast_usingDict(const char *source, char *dest, int originalSize, const char *dictStart, int dictSize)
static unsigned MLZ4_NbCommonBytes(size_t val)
static void MLZ4_putPositionOnHash(const BYTE *p, U32 h, void *tableBase, tableType_t const tableType, const BYTE *srcBase)
int MLZ4_decompress_safe_forceExtDict(const char *source, char *dest, int compressedSize, int maxOutputSize, const char *dictStart, int dictSize)
static U32 MLZ4_hashPosition(const void *p, tableType_t tableType)
int MLZ4_compress_continue(MLZ4_stream_t *MLZ4_stream, const char *source, char *dest, int inputSize)
int MLZ4_compress_limitedOutput_withState(void *state, const char *src, char *dst, int srcSize, int dstSize)
static U16 MLZ4_readLE16(const void *memPtr)
static const BYTE * MLZ4_getPosition(const BYTE *p, void *tableBase, tableType_t tableType, const BYTE *srcBase)
static size_t MLZ4_read_ARCH(const void *p)
static const int MLZ4_64Klimit
FORCE_INLINE int MLZ4_decompress_usingDict_generic(const char *source, char *dest, int compressedSize, int maxOutputSize, int safe, const char *dictStart, int dictSize)
FORCE_INLINE int MLZ4_compress_generic(void *const ctx, const char *const source, char *const dest, const int inputSize, const int maxOutputSize, const limitedOutput_directive outputLimited, const tableType_t tableType, const dict_directive dict, const dictIssue_directive dictIssue, const U32 acceleration)
int MLZ4_sizeofStreamState()
int MLZ4_compress(const char *source, char *dest, int inputSize)
int MLZ4_compress_default(const char *source, char *dest, int inputSize, int maxOutputSize)
int MLZ4_compressBound(int isize)
static void MLZ4_renormDictT(MLZ4_stream_t_internal *MLZ4_dict, const BYTE *src)
int MLZ4_freeStream(MLZ4_stream_t *MLZ4_stream)
static void MLZ4_wildCopy(void *dstPtr, const void *srcPtr, void *dstEnd)
static const int MLZ4_minLength
static int MLZ4_compress_destSize_generic(void *const ctx, const char *const src, char *const dst, int *const srcSizePtr, const int targetDstSize, const tableType_t tableType)
int MLZ4_decompress_fast_withPrefix64k(const char *source, char *dest, int originalSize)
int MLZ4_uncompress(const char *source, char *dest, int outputSize)
static U32 MLZ4_hashSequenceT(size_t sequence, tableType_t const tableType)
static const U64 prime5bytes
int MLZ4_compress_fast_continue(MLZ4_stream_t *MLZ4_stream, const char *source, char *dest, int inputSize, int maxOutputSize, int acceleration)
int MLZ4_saveDict(MLZ4_stream_t *MLZ4_dict, char *safeBuffer, int dictSize)
static void MLZ4_init(MLZ4_stream_t_internal *lz4ds, BYTE *base)
U32 hashTable[HASH_SIZE_U32]
const BYTE * externalDict