    001/*
    002 * Licensed to the Apache Software Foundation (ASF) under one
    003 * or more contributor license agreements.  See the NOTICE file
    004 * distributed with this work for additional information
    005 * regarding copyright ownership.  The ASF licenses this file
    006 * to you under the Apache License, Version 2.0 (the
    007 * "License"); you may not use this file except in compliance
    008 * with the License.  You may obtain a copy of the License at
    009 *
    010 *   https://www.apache.org/licenses/LICENSE-2.0
    011 *
    012 * Unless required by applicable law or agreed to in writing,
    013 * software distributed under the License is distributed on an
    014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    015 * KIND, either express or implied.  See the License for the
    016 * specific language governing permissions and limitations
    017 * under the License.
    018 */
    019
    020package org.apache.commons.compress.compressors.zstandard;
    021
    022import com.github.luben.zstd.Zstd;
    023
    024/**
    025 * Zstd constants.
    026 *
    027 * @since 1.28.0
    028 */
    029public class ZstdConstants {
    030
    031    /**
    032     * Maximum chain log value.
    033     *
    034     * <p>
    035     * <small>This constant name matches the name in the C header file.</small>
    036     * </p>
    037     *
    038     * @see ZstdCompressorOutputStream.Builder#setLevel(int)
    039     * @see <a href="https://github.com/facebook/zstd/blob/dev/lib/zstd.h">zstd.h</a>
    040     */
    041    public static final int ZSTD_CHAINLOG_MAX = Zstd.chainLogMax();
    042
    043    /**
    044     * Minimum chain log value.
    045     *
    046     * <p>
    047     * <small>This constant name matches the name in the C header file.</small>
    048     * </p>
    049     *
    050     * @see ZstdCompressorOutputStream.Builder#setLevel(int)
    051     * @see <a href="https://github.com/facebook/zstd/blob/dev/lib/zstd.h">zstd.h</a>
    052     */
    053    public static final int ZSTD_CHAINLOG_MIN = Zstd.chainLogMin();
    054
    055    /**
    056     * Default compression level.
    057     *
    058     * <p>
    059     * <small>This constant name matches the name in the C header file.</small>
    060     * </p>
    061     *
    062     * @see ZstdCompressorOutputStream.Builder#setLevel(int)
    063     * @see <a href="https://github.com/facebook/zstd/blob/dev/lib/zstd.h">zstd.h</a>
    064     */
    065    public static final int ZSTD_CLEVEL_DEFAULT = Zstd.defaultCompressionLevel();
    066
    067    /**
    068     * Maximum compression level.
    069     *
    070     * <p>
    071     * <small>This constant name matches the name in the C header file.</small>
    072     * </p>
    073     *
    074     * @see ZstdCompressorOutputStream.Builder#setLevel(int)
    075     * @see <a href="https://github.com/facebook/zstd/blob/dev/lib/zstd.h">zstd.h</a>
    076     */
    077    public static final int ZSTD_CLEVEL_MAX = Zstd.maxCompressionLevel();
    078
    079    /**
    080     * Minimum compression level.
    081     *
    082     * <p>
    083     * <small>This constant name matches the name in the C header file.</small>
    084     * </p>
    085     *
    086     * @see ZstdCompressorOutputStream.Builder#setLevel(int)
    087     * @see <a href="https://github.com/facebook/zstd/blob/dev/lib/zstd.h">zstd.h</a>
    088     */
    089    public static final int ZSTD_CLEVEL_MIN = Zstd.minCompressionLevel();
    090
    091    /**
    092     * Maximum hash log value.
    093     *
    094     * <p>
    095     * <small>This constant name matches the name in the C header file.</small>
    096     * </p>
    097     *
    098     * @see ZstdCompressorOutputStream.Builder#setHashLog(int)
    099     * @see <a href="https://github.com/facebook/zstd/blob/dev/lib/zstd.h">zstd.h</a>
    100     */
    101    public static final int ZSTD_HASHLOG_MAX = Zstd.hashLogMax();
    102
    103    /**
    104     * Minimum hash log value.
    105     *
    106     * <p>
    107     * <small>This constant name matches the name in the C header file.</small>
    108     * </p>
    109     *
    110     * @see ZstdCompressorOutputStream.Builder#setHashLog(int)
    111     * @see <a href="https://github.com/facebook/zstd/blob/dev/lib/zstd.h">zstd.h</a>
    112     */
    113    public static final int ZSTD_HASHLOG_MIN = Zstd.hashLogMin();
    114
    115    /**
    116     * {@code ZSTD_MINMATCH_MAX} = {@value}. Only for ZSTD_fast, other strategies are limited to 6.
    117     *
    118     * <p>
    119     * <small>This constant name matches the name in the C header file.</small>
    120     * </p>
    121     *
    122     * @see ZstdCompressorOutputStream.Builder#setMinMatch(int)
    123     * @see <a href="https://github.com/facebook/zstd/blob/dev/lib/zstd.h">zstd.h</a>
    124     */
    125    public static final int ZSTD_MINMATCH_MAX = 7;
    126
    127    /**
    128     * {@code ZSTD_MINMATCH_MAX} = {@value}. Only for ZSTD_btopt+, faster strategies are limited to 4.
    129     */
    130    public static final int ZSTD_MINMATCH_MIN = 3;
    131
    132    /**
    133     * Maximum search log value.
    134     *
    135     * <p>
    136     * <small>This constant name matches the name in the C header file.</small>
    137     * </p>
    138     *
    139     * @see ZstdCompressorOutputStream.Builder#setSearchLog(int)
    140     * @see <a href="https://github.com/facebook/zstd/blob/dev/lib/zstd.h">zstd.h</a>
    141     */
    142    public static final int ZSTD_SEARCHLOG_MAX = Zstd.searchLogMax();
    143
    144    /**
    145     * Minimum search log value.
    146     *
    147     * <p>
    148     * <small>This constant name matches the name in the C header file.</small>
    149     * </p>
    150     *
    151     * @see ZstdCompressorOutputStream.Builder#setSearchLog(int)
    152     * @see <a href="https://github.com/facebook/zstd/blob/dev/lib/zstd.h">zstd.h</a>
    153     */
    154    public static final int ZSTD_SEARCHLOG_MIN = Zstd.searchLogMin();
    155
    156    /**
    157     * {@code ZSTD_WINDOWLOG_LIMIT_DEFAULT} = {@value}.
    158     * <p>
    159     * By default, the streaming decoder will refuse any frame requiring larger than (in C) {@code (1 << ZSTD_WINDOWLOG_LIMIT_DEFAULT)} window size, to preserve
    160     * host's memory from unreasonable requirements.
    161     * </p>
    162     *
    163     * <p>
    164     * <small>This constant name matches the name in the C header file.</small>
    165     * </p>
    166     *
    167     * @see ZstdCompressorOutputStream.Builder#setMinMatch(int)
    168     * @see <a href="https://github.com/facebook/zstd/blob/dev/lib/zstd.h">zstd.h</a>
    169     */
    170    public static final int ZSTD_WINDOWLOG_LIMIT_DEFAULT = 27;
    171
    172    /**
    173     * Maximum window log value.
    174     *
    175     * <p>
    176     * <small>This constant name matches the name in the C header file.</small>
    177     * </p>
    178     *
    179     * @see ZstdCompressorOutputStream.Builder#setWindowLog(int)
    180     * @see <a href="https://github.com/facebook/zstd/blob/dev/lib/zstd.h">zstd.h</a>
    181     */
    182    public static final int ZSTD_WINDOWLOG_MAX = Zstd.windowLogMax();
    183
    184    /**
    185     * Minimum window log value.
    186     *
    187     * <p>
    188     * <small>This constant name matches the name in the C header file.</small>
    189     * </p>
    190     *
    191     * @see ZstdCompressorOutputStream.Builder#setWindowLog(int)
    192     * @see <a href="https://github.com/facebook/zstd/blob/dev/lib/zstd.h">zstd.h</a>
    193     */
    194    public static final int ZSTD_WINDOWLOG_MIN = Zstd.windowLogMin();
    195
    196}