CMSIS2000  0.0.7
 Указатель Структуры данных Файлы Функции Переменные Определения типов Перечисления Элементы перечислений Макросы Группы Страницы
Файл lz4hc.c
#include <stdlib.h>
#include <string.h>
#include "lz4hc.h"
#include <stdint.h>
Граф включаемых заголовочных файлов для lz4hc.c:

См. исходные тексты.

Структуры данных

struct  _U16_S
struct  _U32_S
struct  _U64_S
struct  LZ4HC_Data_Structure

Макросы

#define A16(x)   (((U16_S *)(x))->v)
#define A32(x)   (((U32_S *)(x))->v)
#define A64(x)   (((U64_S *)(x))->v)
#define AARCH   A32
#define ALLOCATOR(s)   calloc(1,s)
#define BYTE   uint8_t
#define COPYLENGTH   8
#define DELTANEXT(p)   chainTable[(size_t)(p) & MAXD_MASK]
#define DICTIONARY_LOGSIZE   16
#define forceinline   inline
#define FREEMEM   free
#define GETNEXT(p)   ((p) - (size_t)DELTANEXT(p))
#define HASH_FUNCTION(i)   (((i) * 2654435761U) >> ((MINMATCH*8)-HASH_LOG))
#define HASH_LOG   (DICTIONARY_LOGSIZE-1)
#define HASH_MASK   (HASHTABLESIZE - 1)
#define HASH_POINTER(p)   (HashTable[HASH_VALUE(p)] + base)
#define HASH_VALUE(p)   HASH_FUNCTION(A32(p))
#define HASHTABLESIZE   (1 << HASH_LOG)
#define HTYPE   const BYTE*
#define INITBASE(b, s)   const int b = 0
#define LASTLITERALS   5
#define LZ4_ARCH64   0
#define LZ4_BLINDCOPY(s, d, l)   { BYTE* e=d+l; LZ4_WILDCOPY(s,d,e); d=e; }
#define lz4_bswap16(x)   ((unsigned short int) ((((x) >> 8) & 0xffu) | (((x) & 0xffu) << 8)))
#define LZ4_COPYPACKET(s, d)   LZ4_COPYSTEP(s,d); LZ4_COPYSTEP(s,d);
#define LZ4_COPYSTEP(s, d)   A32(d) = A32(s); d+=4; s+=4;
#define LZ4_READ_LITTLEENDIAN_16(d, s, p)   { d = (s) - A16(p); }
#define LZ4_WILDCOPY(s, d, e)   do { LZ4_COPYPACKET(s,d) } while (d<e);
#define LZ4_WRITE_LITTLEENDIAN_16(p, v)   { A16(p) = v; p+=2; }
#define MAX_DISTANCE   (MAXD - 1)
#define MAX_NB_ATTEMPTS   256
#define MAXD   (1<<DICTIONARY_LOGSIZE)
#define MAXD_MASK   ((U32)(MAXD - 1))
#define MEM_INIT   memset
#define MFLIMIT   (COPYLENGTH+MINMATCH)
#define MINLENGTH   (MFLIMIT+1)
#define MINMATCH   4
#define ML_BITS   4
#define ML_MASK   (size_t)((1U<<ML_BITS)-1)
#define OPTIMAL_ML   (int)((ML_MASK-1)+MINMATCH)
#define REPEAT_OPTIMIZATION
#define restrict
#define RUN_BITS   (8-ML_BITS)
#define RUN_MASK   ((1U<<RUN_BITS)-1)
#define S32   int32_t
#define STEPSIZE   4
#define U16   uint16_t
#define U32   uint32_t
#define U64   uint64_t
#define UARCH   U32

Определения типов

typedef struct _U16_S U16_S
typedef struct _U32_S U32_S
typedef struct _U64_S U64_S

Функции

int LZ4_compressHC (const char *source, char *dest, int isize)
int LZ4_compressHCCtx (LZ4HC_Data_Structure *ctx, const char *source, char *dest, int isize)
static forceinline int LZ4_encodeSequence (const BYTE **ip, BYTE **op, const BYTE **anchor, int ml, const BYTE *ref)
static int LZ4_NbCommonBytes (register U32 val)
static forceinline size_t LZ4HC_CommonLength (const BYTE *p1, const BYTE *p2, const BYTE *const matchlimit)
static void * LZ4HC_Create (const BYTE *base)
static int LZ4HC_Free (void **LZ4HC_Data)
static int LZ4HC_Init (LZ4HC_Data_Structure *hc4, const BYTE *base)
static forceinline void LZ4HC_Insert (LZ4HC_Data_Structure *hc4, const BYTE *ip)
static forceinline int LZ4HC_InsertAndFindBestMatch (LZ4HC_Data_Structure *hc4, const BYTE *ip, const BYTE *const matchlimit, const BYTE **matchpos)
static forceinline int LZ4HC_InsertAndGetWiderMatch (LZ4HC_Data_Structure *hc4, const BYTE *ip, const BYTE *startLimit, const BYTE *matchlimit, int longest, const BYTE **matchpos, const BYTE **startpos)

Макросы

#define A16 (   x)    (((U16_S *)(x))->v)

См. определение в файле lz4hc.c строка 155

Используется в LZ4HC_CommonLength() и LZ4HC_InsertAndGetWiderMatch().

#define A32 (   x)    (((U32_S *)(x))->v)

См. определение в файле lz4hc.c строка 154

Используется в LZ4HC_CommonLength(), LZ4HC_InsertAndFindBestMatch() и LZ4HC_InsertAndGetWiderMatch().

#define A64 (   x)    (((U64_S *)(x))->v)

См. определение в файле lz4hc.c строка 153

#define AARCH   A32

См. определение в файле lz4hc.c строка 202

Используется в LZ4HC_CommonLength() и LZ4HC_InsertAndGetWiderMatch().

#define ALLOCATOR (   s)    calloc(1,s)

См. определение в файле lz4hc.c строка 118

Используется в LZ4HC_Create().

#define BYTE   uint8_t

См. определение в файле lz4hc.c строка 134

#define COPYLENGTH   8

См. определение в файле lz4hc.c строка 179

#define DELTANEXT (   p)    chainTable[(size_t)(p) & MAXD_MASK]

См. определение в файле lz4hc.c строка 236

Используется в LZ4HC_Insert() и LZ4HC_InsertAndFindBestMatch().

#define DICTIONARY_LOGSIZE   16

См. определение в файле lz4hc.c строка 163

#define forceinline   inline

См. определение в файле lz4hc.c строка 100

#define FREEMEM   free

См. определение в файле lz4hc.c строка 119

Используется в LZ4HC_Free().

#define GETNEXT (   p)    ((p) - (size_t)DELTANEXT(p))

См. определение в файле lz4hc.c строка 237

Используется в LZ4HC_InsertAndFindBestMatch() и LZ4HC_InsertAndGetWiderMatch().

#define HASH_FUNCTION (   i)    (((i) * 2654435761U) >> ((MINMATCH*8)-HASH_LOG))

См. определение в файле lz4hc.c строка 233

#define HASH_LOG   (DICTIONARY_LOGSIZE-1)

См. определение в файле lz4hc.c строка 168

#define HASH_MASK   (HASHTABLESIZE - 1)

См. определение в файле lz4hc.c строка 170

#define HASH_POINTER (   p)    (HashTable[HASH_VALUE(p)] + base)

См. определение в файле lz4hc.c строка 235

Используется в LZ4HC_Insert(), LZ4HC_InsertAndFindBestMatch() и LZ4HC_InsertAndGetWiderMatch().

#define HASH_VALUE (   p)    HASH_FUNCTION(A32(p))

См. определение в файле lz4hc.c строка 234

Используется в LZ4HC_Insert() и LZ4HC_InsertAndFindBestMatch().

#define HASHTABLESIZE   (1 << HASH_LOG)

См. определение в файле lz4hc.c строка 169

#define HTYPE   const BYTE*

См. определение в файле lz4hc.c строка 203

Используется в LZ4HC_Insert(), LZ4HC_InsertAndFindBestMatch() и LZ4HC_InsertAndGetWiderMatch().

#define INITBASE (   b,
 
)    const int b = 0

См. определение в файле lz4hc.c строка 204

Используется в LZ4HC_Insert(), LZ4HC_InsertAndFindBestMatch() и LZ4HC_InsertAndGetWiderMatch().

#define LASTLITERALS   5

См. определение в файле lz4hc.c строка 180

Используется в LZ4_compressHCCtx().

#define LZ4_ARCH64   0

См. определение в файле lz4hc.c строка 42

Используется в LZ4HC_CommonLength(), LZ4HC_Init() и LZ4HC_InsertAndGetWiderMatch().

#define LZ4_BLINDCOPY (   s,
  d,
 
)    { BYTE* e=d+l; LZ4_WILDCOPY(s,d,e); d=e; }

См. определение в файле lz4hc.c строка 232

Используется в LZ4_encodeSequence().

#define lz4_bswap16 (   x)    ((unsigned short int) ((((x) >> 8) & 0xffu) | (((x) & 0xffu) << 8)))

См. определение в файле lz4hc.c строка 107

#define LZ4_COPYPACKET (   s,
 
)    LZ4_COPYSTEP(s,d); LZ4_COPYSTEP(s,d);

См. определение в файле lz4hc.c строка 200

#define LZ4_COPYSTEP (   s,
 
)    A32(d) = A32(s); d+=4; s+=4;

См. определение в файле lz4hc.c строка 199

#define LZ4_READ_LITTLEENDIAN_16 (   d,
  s,
 
)    { d = (s) - A16(p); }

См. определение в файле lz4hc.c строка 211

#define LZ4_WILDCOPY (   s,
  d,
 
)    do { LZ4_COPYPACKET(s,d) } while (d<e);

См. определение в файле lz4hc.c строка 231

#define LZ4_WRITE_LITTLEENDIAN_16 (   p,
 
)    { A16(p) = v; p+=2; }

См. определение в файле lz4hc.c строка 212

Используется в LZ4_encodeSequence().

#define MAX_DISTANCE   (MAXD - 1)

См. определение в файле lz4hc.c строка 166

Используется в LZ4HC_Insert(), LZ4HC_InsertAndFindBestMatch() и LZ4HC_InsertAndGetWiderMatch().

#define MAX_NB_ATTEMPTS   256

См. определение в файле lz4hc.c строка 172

Используется в LZ4HC_InsertAndFindBestMatch() и LZ4HC_InsertAndGetWiderMatch().

#define MAXD   (1<<DICTIONARY_LOGSIZE)

См. определение в файле lz4hc.c строка 164

#define MAXD_MASK   ((U32)(MAXD - 1))

См. определение в файле lz4hc.c строка 165

#define MEM_INIT   memset

См. определение в файле lz4hc.c строка 120

Используется в LZ4HC_Init().

#define MFLIMIT   (COPYLENGTH+MINMATCH)

См. определение в файле lz4hc.c строка 181

Используется в LZ4_compressHCCtx().

#define MINLENGTH   (MFLIMIT+1)

См. определение в файле lz4hc.c строка 182

#define MINMATCH   4

См. определение в файле lz4hc.c строка 161

Используется в LZ4_compressHCCtx(), LZ4_encodeSequence(), LZ4HC_InsertAndFindBestMatch() и LZ4HC_InsertAndGetWiderMatch().

#define ML_BITS   4

См. определение в файле lz4hc.c строка 174

Используется в LZ4_compressHCCtx() и LZ4_encodeSequence().

#define ML_MASK   (size_t)((1U<<ML_BITS)-1)

См. определение в файле lz4hc.c строка 175

Используется в LZ4_compressHCCtx() и LZ4_encodeSequence().

#define OPTIMAL_ML   (int)((ML_MASK-1)+MINMATCH)

См. определение в файле lz4hc.c строка 183

Используется в LZ4_compressHCCtx().

#define REPEAT_OPTIMIZATION
#define restrict

См. определение в файле lz4hc.c строка 82

#define RUN_BITS   (8-ML_BITS)

См. определение в файле lz4hc.c строка 176

#define RUN_MASK   ((1U<<RUN_BITS)-1)

См. определение в файле lz4hc.c строка 177

Используется в LZ4_compressHCCtx() и LZ4_encodeSequence().

#define S32   int32_t

См. определение в файле lz4hc.c строка 137

Используется в LZ4_NbCommonBytes().

#define STEPSIZE   4

См. определение в файле lz4hc.c строка 198

Используется в LZ4HC_CommonLength() и LZ4HC_InsertAndGetWiderMatch().

#define U16   uint16_t

См. определение в файле lz4hc.c строка 135

Используется в LZ4_encodeSequence(), LZ4HC_Insert(), LZ4HC_InsertAndFindBestMatch() и LZ4HC_InsertAndGetWiderMatch().

#define U32   uint32_t

См. определение в файле lz4hc.c строка 136

Используется в LZ4_NbCommonBytes().

#define U64   uint64_t

См. определение в файле lz4hc.c строка 138

#define UARCH   U32

См. определение в файле lz4hc.c строка 201

Используется в LZ4HC_CommonLength() и LZ4HC_InsertAndGetWiderMatch().

Типы

typedef struct _U16_S U16_S
typedef struct _U32_S U32_S
typedef struct _U64_S U64_S

Функции

int LZ4_compressHC ( const char *  source,
char *  dest,
int  isize 
)

См. определение в файле lz4hc.c строка 719

Перекрестные ссылки LZ4_compressHCCtx(), LZ4HC_Create() и LZ4HC_Free().

Используется в compress_file().

Граф вызовов:

Граф вызова функции:

int LZ4_compressHCCtx ( LZ4HC_Data_Structure ctx,
const char *  source,
char *  dest,
int  isize 
)

См. определение в файле lz4hc.c строка 534

Перекрестные ссылки BYTE, LASTLITERALS, LZ4_encodeSequence(), LZ4HC_InsertAndFindBestMatch(), LZ4HC_InsertAndGetWiderMatch(), matchlimit, MFLIMIT, MINMATCH, ML_BITS, ML_MASK, NULL, OPTIMAL_ML и RUN_MASK.

Используется в LZ4_compressHC().

Граф вызовов:

Граф вызова функции:

static forceinline int LZ4_encodeSequence ( const BYTE **  ip,
BYTE **  op,
const BYTE **  anchor,
int  ml,
const BYTE ref 
)
static

См. определение в файле lz4hc.c строка 500

Перекрестные ссылки BYTE, LZ4_BLINDCOPY, LZ4_WRITE_LITTLEENDIAN_16, MINMATCH, ML_BITS, ML_MASK, RUN_MASK и U16.

Используется в LZ4_compressHCCtx().

Граф вызова функции:

static int LZ4_NbCommonBytes ( register U32  val)
inlinestatic

См. определение в файле lz4hc.c строка 277

Перекрестные ссылки S32 и U32.

Используется в LZ4HC_CommonLength() и LZ4HC_InsertAndGetWiderMatch().

Граф вызова функции:

static forceinline size_t LZ4HC_CommonLength ( const BYTE p1,
const BYTE p2,
const BYTE *const  matchlimit 
)
static

См. определение в файле lz4hc.c строка 355

Перекрестные ссылки A16, A32, AARCH, LZ4_ARCH64, LZ4_NbCommonBytes(), STEPSIZE и UARCH.

Используется в LZ4HC_InsertAndFindBestMatch() и LZ4HC_InsertAndGetWiderMatch().

Граф вызовов:

Граф вызова функции:

static void* LZ4HC_Create ( const BYTE base)
inlinestatic

См. определение в файле lz4hc.c строка 319

Перекрестные ссылки ALLOCATOR и LZ4HC_Init().

Используется в LZ4_compressHC().

Граф вызовов:

Граф вызова функции:

static int LZ4HC_Free ( void **  LZ4HC_Data)
inlinestatic

См. определение в файле lz4hc.c строка 328

Перекрестные ссылки FREEMEM и NULL.

Используется в LZ4_compressHC().

Граф вызова функции:

static int LZ4HC_Init ( LZ4HC_Data_Structure hc4,
const BYTE base 
)
inlinestatic

См. определение в файле lz4hc.c строка 309

Перекрестные ссылки LZ4HC_Data_Structure::base, LZ4HC_Data_Structure::chainTable, LZ4HC_Data_Structure::hashTable, LZ4_ARCH64, MEM_INIT и LZ4HC_Data_Structure::nextToUpdate.

Используется в LZ4HC_Create().

Граф вызова функции:

static forceinline void LZ4HC_Insert ( LZ4HC_Data_Structure hc4,
const BYTE ip 
)
static

См. определение в файле lz4hc.c строка 337

Перекрестные ссылки LZ4HC_Data_Structure::base, LZ4HC_Data_Structure::chainTable, DELTANEXT, HASH_POINTER, HASH_VALUE, LZ4HC_Data_Structure::hashTable, HTYPE, INITBASE, MAX_DISTANCE, LZ4HC_Data_Structure::nextToUpdate и U16.

Используется в LZ4HC_InsertAndFindBestMatch() и LZ4HC_InsertAndGetWiderMatch().

Граф вызова функции:

static forceinline int LZ4HC_InsertAndFindBestMatch ( LZ4HC_Data_Structure hc4,
const BYTE ip,
const BYTE *const  matchlimit,
const BYTE **  matchpos 
)
static

См. определение в файле lz4hc.c строка 373

Перекрестные ссылки A32, LZ4HC_Data_Structure::base, LZ4HC_Data_Structure::chainTable, DELTANEXT, GETNEXT, HASH_POINTER, HASH_VALUE, LZ4HC_Data_Structure::hashTable, HTYPE, INITBASE, LZ4HC_CommonLength(), LZ4HC_Insert(), MAX_DISTANCE, MAX_NB_ATTEMPTS, MINMATCH, LZ4HC_Data_Structure::nextToUpdate и U16.

Используется в LZ4_compressHCCtx().

Граф вызовов:

Граф вызова функции:

static forceinline int LZ4HC_InsertAndGetWiderMatch ( LZ4HC_Data_Structure hc4,
const BYTE ip,
const BYTE startLimit,
const BYTE matchlimit,
int  longest,
const BYTE **  matchpos,
const BYTE **  startpos 
)
static

См. определение в файле lz4hc.c строка 441

Перекрестные ссылки A16, A32, AARCH, LZ4HC_Data_Structure::base, LZ4HC_Data_Structure::chainTable, GETNEXT, HASH_POINTER, LZ4HC_Data_Structure::hashTable, HTYPE, INITBASE, LZ4_ARCH64, LZ4_NbCommonBytes(), LZ4HC_CommonLength(), LZ4HC_Insert(), MAX_DISTANCE, MAX_NB_ATTEMPTS, MINMATCH, STEPSIZE, U16 и UARCH.

Используется в LZ4_compressHCCtx().

Граф вызовов:

Граф вызова функции: