📄 lzlocal.h
字号:
/**************************************************************************** Lempel, Ziv, Storer, and Szymanski Encoding and Decoding** File : lzlocal.h* Purpose : Internal headers for LZSS encode and decode routines.* Contains the prototypes to be used by the different match* finding algorithms.* Author : Michael Dipperstein* Date : February 18, 2004****************************************************************************** UPDATES** $Id: lzlocal.h,v 1.3 2005/12/28 05:58:52 michael Exp $* $Log: lzlocal.h,v $* Revision 1.3 2005/12/28 05:58:52 michael* Add Wrap macro to replace mod when value is less than twice the limit.** Revision 1.2 2004/11/08 05:54:18 michael* 1. Split encode and decode routines for smarter linking* 2. Renamed lzsample.c sample.c to match my other samples* 3. Makefile now builds code as libraries for better LGPL compliance.** Revision 1.1 2004/02/22 17:32:40 michael* Initial revision of header files for sliding window search implementations.******************************************************************************** LZSS: An ANSI C LZSS Encoding/Decoding Routine* Copyright (C) 2004 by Michael Dipperstein (mdipper@cs.ucsb.edu)** This library is free software; you can redistribute it and/or* modify it under the terms of the GNU Lesser General Public* License as published by the Free Software Foundation; either* version 2.1 of the License, or (at your option) any later version.** This library is distributed in the hope that it will be useful,* but WITHOUT ANY WARRANTY; without even the implied warranty of* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU* Lesser General Public License for more details.** You should have received a copy of the GNU Lesser General Public* License along with this library; if not, write to the Free Software* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA****************************************************************************/#ifndef _LZSS_LOCAL_H#define _LZSS_LOCAL_H/**************************************************************************** INCLUDED FILES***************************************************************************/#include <limits.h>/**************************************************************************** CONSTANTS***************************************************************************/#define FALSE 0#define TRUE 1#define OFFSET_BITS 12#define LENGTH_BITS 4#if (((1 << (OFFSET_BITS + LENGTH_BITS)) - 1) > UINT_MAX)#error "Size of encoded data must not exceed the size of an unsigned int"#endif/* We want a sliding window*/#define WINDOW_SIZE (1 << OFFSET_BITS)/* maximum match length not encoded and maximum length encoded (4 bits) */#define MAX_UNCODED 2#define MAX_CODED ((1 << LENGTH_BITS) + MAX_UNCODED)#define ENCODED 0 /* encoded string */#define UNCODED 1 /* unencoded character *//**************************************************************************** TYPE DEFINITIONS***************************************************************************//**************************************************************************** This data structure stores an encoded string in (offset, length) format.* The actual encoded string is stored using OFFSET_BITS for the offset and* LENGTH_BITS for the length.***************************************************************************/typedef struct encoded_string_t{ unsigned int offset; /* offset to start of longest match */ unsigned int length; /* length of longest match */} encoded_string_t;/**************************************************************************** MACROS***************************************************************************//* wraps array index within array bounds (assumes value < 2 * limit) */#define Wrap(value, limit) (((value) < (limit)) ? (value) : ((value) - (limit)))/**************************************************************************** PROTOTYPES***************************************************************************/void InitializeSearchStructures(void);encoded_string_t FindMatch(unsigned int windowHead, unsigned int uncodedHead);void ReplaceChar(unsigned int charIndex, unsigned char replacement);#endif /* ndef _LZSS_LOCAL_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -