/* lzo1b_de.h -- definitions for the the LZO1B/LZO1C algorithm

   This file is part of the LZO real-time data compression library.

   Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer
   Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer
   Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer
   Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer
   Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer
   Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer
   Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer
   Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer
   Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer
   Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer
   Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer
   Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer
   Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer
   All Rights Reserved.

   The LZO library is free software; you can redistribute it and/or
   modify it under the terms of the GNU General Public License as
   published by the Free Software Foundation; either version 2 of
   the License, or (at your option) any later version.

   The LZO 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 General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with the LZO library; see the file COPYING.
   If not, write to the Free Software Foundation, Inc.,
   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

   Markus F.X.J. Oberhumer
   <markus@oberhumer.com>
   http://www.oberhumer.com/opensource/lzo/
 */


/* WARNING: this file should *not* be used by applications. It is
   part of the implementation of the library and is subject
   to change.
 */


#ifndef __LZO_DEFS_H
#define __LZO_DEFS_H

#ifdef __cplusplus
extern "C" {
#endif


/***********************************************************************
//
************************************************************************/

/*
     Format of the marker byte

     76543210
     --------
     00000000   R0 - a long literal run ('R0' run)
     000rrrrr   R  - a short literal run with len r
     00100000   M4 - a very long match
     001mmmmm   M3 - a long match  (len = m+M3_MIN_LEN)
     mmmooooo   M2 - a short match (len = m+M2_MIN_LEN, o = offset low bits)

                M1 is not used !
*/


#ifndef R_BITS
#define R_BITS              (5)
#endif


#ifndef M1L_BITS
#define M1L_BITS            (0)
#endif
#ifndef M2L_BITS
#define M2L_BITS            (CHAR_BIT - M2O_BITS)
#endif
#ifndef M3L_BITS
#define M3L_BITS            (R_BITS)
#endif
#ifndef M4L_BITS
#define M4L_BITS            (CHAR_BIT)
#endif

#ifndef M1O_BITS
#define M1O_BITS            (6)
#endif
#ifndef M2O_BITS
#define M2O_BITS            (R_BITS)
#endif
#ifndef M3O_BITS
#define M3O_BITS            (CHAR_BIT)
#endif
#ifndef M4O_BITS
#define M4O_BITS            (M3O_BITS)              /* must be the same */
#endif

#ifndef M1X_BITS
#define M1X_BITS            (M1O_BITS)
#endif
#ifndef M2X_BITS
#define M2X_BITS            (M2O_BITS + CHAR_BIT)
#endif
#ifndef M3X_BITS
#define M3X_BITS            (M3O_BITS + CHAR_BIT)
#endif
#ifndef M4X_BITS
#define M4X_BITS            M3X_BITS
#endif


#define __MIN_OFFSET(bits)  1
#define __MAX_OFFSET(bits)  LZO_LSIZE(bits)

#define M1_MIN_OFFSET       __MIN_OFFSET(M1X_BITS)
#define M2_MIN_OFFSET       __MIN_OFFSET(M2X_BITS)
#define M3_MIN_OFFSET       __MIN_OFFSET(M3X_BITS)
#define M4_MIN_OFFSET       M3_MIN_OFFSET

#if defined(LZO_EOF_CODE) && !defined(M3_EOF_OFFSET)
#define M3_EOF_OFFSET       1
#else
#define M3_EOF_OFFSET       0
#endif

#ifndef _M1_MAX_OFFSET
#define _M1_MAX_OFFSET      __MAX_OFFSET(M1X_BITS)
#endif
#ifndef _M2_MAX_OFFSET
#define _M2_MAX_OFFSET      __MAX_OFFSET(M2X_BITS)
#endif
#ifndef _M3_MAX_OFFSET
#define _M3_MAX_OFFSET      (__MAX_OFFSET(M3X_BITS) - M3_EOF_OFFSET)
#endif
#ifndef _M4_MAX_OFFSET
#define _M4_MAX_OFFSET      _M3_MAX_OFFSET
#endif
#ifndef _MAX_OFFSET
#define _MAX_OFFSET         _M4_MAX_OFFSET
#endif

#if (M3_EOF_OFFSET > 0) && (_M2_MAX_OFFSET == _M3_MAX_OFFSET + M3_EOF_OFFSET)
#  undef _M2_MAX_OFFSET
#  define _M2_MAX_OFFSET    _M3_MAX_OFFSET
#endif
#if (_M2_MAX_OFFSET > _M3_MAX_OFFSET)
#  error
#endif

#define M1_MAX_OFFSET       ((lzo_uint) _M1_MAX_OFFSET)
#define M2_MAX_OFFSET       ((lzo_uint) _M2_MAX_OFFSET)
#define M3_MAX_OFFSET       ((lzo_uint) _M3_MAX_OFFSET)
#define M4_MAX_OFFSET       ((lzo_uint) _M4_MAX_OFFSET)
#define MAX_OFFSET          ((lzo_uint) _MAX_OFFSET)


#ifndef M1_MIN_LEN
#define M1_MIN_LEN          (2)
#endif
#ifndef M2_MIN_LEN
#define M2_MIN_LEN          (3)
#endif
#ifndef M3_MIN_LEN
#if (M3X_BITS == M2X_BITS)
#define M3_MIN_LEN          (M2_MAX_LEN + 1)
#else
#define M3_MIN_LEN          (4)
#endif
#endif
#ifndef M4_MIN_LEN
#define M4_MIN_LEN          (M3_MAX_LEN + 1)
#endif

#ifndef M1_MAX_LEN
#define M1_MAX_LEN          (M1_MIN_LEN + LZO_SIZE(M1L_BITS) - 1)
#endif
#ifndef M2_MAX_LEN
#define M2_MAX_LEN          (M2_MIN_LEN + LZO_SIZE(M2L_BITS) - 3)
#endif
#ifndef M3_MAX_LEN
#define M3_MAX_LEN          (M3_MIN_LEN + LZO_SIZE(M3L_BITS) - 2)
#endif
#ifndef M4_MAX_LEN
#define M4_MAX_LEN          (ULONG_MAX)
#endif


#define M1O_MASK            LZO_MASK(M1O_BITS)
#define M1L_MASK            LZO_MASK(M1L_BITS)
#define M2O_MASK            LZO_MASK(M2O_BITS)
#define M2L_MASK            LZO_MASK(M2L_BITS)
#define M3O_MASK            LZO_MASK(M3O_BITS)
#define M3L_MASK            LZO_MASK(M3L_BITS)
#define M4O_MASK            LZO_MASK(M4O_BITS)
#define M4L_MASK            LZO_MASK(M4L_BITS)


#define M1_MARKER           (1 << M1O_BITS)
#define M2_MARKER           (2 << M2O_BITS)
#define M3_MARKER           (1 << M3L_BITS)
#define M4_MARKER           M3_MARKER


/***********************************************************************
// R0 literal run (a long run)
************************************************************************/

#ifndef R0MIN
#define R0MIN   (LZO_SIZE(R_BITS))  /* Minimum len of R0 run of literals */
#endif
#define R0MAX   (R0MIN + 256 - 1)   /* Maximum len of R0 run of literals */

#if (R0MAX - (R0MAX & ~7u) >= 7)
#define R0FAST  (R0MAX & ~7u)       /* R0MAX aligned to 8 byte boundary */
#else
#define R0FAST  (R0MAX & ~15u)      /* R0MAX aligned to 8 byte boundary */
#endif

#if (R0MAX - R0FAST < 7) || ((R0FAST & 7) != 0)
#  error "something went wrong"
#endif
#if (R0FAST * 2 < 512)
#  error "R0FAST is not big enough"
#endif

/* 7 special codes from R0FAST+1 .. R0MAX
 * these codes mean long R0 runs with lengths
 * 512, 1024, 2048, 4096, 8192, 16384, 32768
 */



/***********************************************************************
// matching
************************************************************************/

#define PS  *m_pos++ != *ip++


/* We already matched M2_MIN_LEN bytes.
 * Try to match another M2_MAX_LEN - M2_MIN_LEN bytes. */

#if (M2_MAX_LEN - M2_MIN_LEN == 4)
#  define MATCH_M2X     (PS || PS || PS || PS)
#elif (M2_MAX_LEN - M2_MIN_LEN == 5)
#  define MATCH_M2X     (PS || PS || PS || PS || PS)
#elif (M2_MAX_LEN - M2_MIN_LEN == 6)
#  define MATCH_M2X     (PS || PS || PS || PS || PS || PS)
#elif (M2_MAX_LEN - M2_MIN_LEN == 7)
#  define MATCH_M2X     (PS || PS || PS || PS || PS || PS || PS)
#elif (M2_MAX_LEN - M2_MIN_LEN == 13)
#  define MATCH_M2X     (PS || PS || PS || PS || PS || PS || PS || PS || \
                         PS || PS || PS || PS || PS)
#elif (M2_MAX_LEN - M2_MIN_LEN == 14)
#  define MATCH_M2X     (PS || PS || PS || PS || PS || PS || PS || PS || \
                         PS || PS || PS || PS || PS || PS)
#elif (M2_MAX_LEN - M2_MIN_LEN == 16)
#  define MATCH_M2X     (PS || PS || PS || PS || PS || PS || PS || PS || \
                         PS || PS || PS || PS || PS || PS || PS || PS)
#elif (M2_MAX_LEN - M2_MIN_LEN == 29)
#  define MATCH_M2X     (PS || PS || PS || PS || PS || PS || PS || PS || \
                         PS || PS || PS || PS || PS || PS || PS || PS || \
                         PS || PS || PS || PS || PS || PS || PS || PS || \
                         PS || PS || PS || PS || PS)
#else
#  error "MATCH_M2X not yet implemented"
#endif


/* We already matched M2_MIN_LEN bytes.
 * Try to match another M2_MAX_LEN + 1 - M2_MIN_LEN bytes
 * to see if we get more than a M2 match */

#define MATCH_M2        (MATCH_M2X || PS)


/***********************************************************************
// copying
************************************************************************/

#define _CP             *op++ = *m_pos++

#if (M2_MIN_LEN == 2)
#  define COPY_M2X      _CP
#elif (M2_MIN_LEN == 3)
#  define COPY_M2X      _CP; _CP
#elif (M2_MIN_LEN == 4)
#  define COPY_M2X      _CP; _CP; _CP
#else
#  error "COPY_M2X not yet implemented"
#endif

#if (M3_MIN_LEN == 3)
#  define COPY_M3X      _CP; _CP
#elif (M3_MIN_LEN == 4)
#  define COPY_M3X      _CP; _CP; _CP
#elif (M3_MIN_LEN == 9)
#  define COPY_M3X      _CP; _CP; _CP; _CP; _CP; _CP; _CP; _CP
#else
#  error "COPY_M3X not yet implemented"
#endif

#define COPY_M2         COPY_M2X; *op++ = *m_pos++
#define COPY_M3         COPY_M3X; *op++ = *m_pos++


/***********************************************************************
//
************************************************************************/

#if defined(LZO_NEED_DICT_H)

#define DL_MIN_LEN          M2_MIN_LEN
#define D_INDEX1(d,p)       d = DM(DMUL(0x21,DX3(p,5,5,6)) >> 5)
#define D_INDEX2(d,p)       d = (d & (D_MASK & 0x7ff)) ^ (D_HIGH | 0x1f)
#include "lzo_dict.h"

#ifndef MIN_LOOKAHEAD
#define MIN_LOOKAHEAD       (M2_MAX_LEN + 1)
#endif
#ifndef MAX_LOOKBEHIND
#define MAX_LOOKBEHIND      (MAX_OFFSET)
#endif

#endif /* defined(LZO_NEED_DICT_H) */


#ifdef __cplusplus
} /* extern "C" */
#endif

#endif /* already included */

/*
vi:ts=4:et
*/

