| /** |
| * \file lzma.h |
| * \brief The public API of liblzma |
| * |
| * liblzma is a LZMA compression library with a zlib-like API. |
| * liblzma is based on LZMA SDK found from http://7-zip.org/sdk.html. |
| * |
| * \author Copyright (C) 1999-2006 Igor Pavlov |
| * \author Copyright (C) 2007 Lasse Collin |
| * |
| * 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. |
| * |
| * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
| * |
| * Before #including this file, you must make the following types available: |
| * - size_t |
| * - uint8_t |
| * - int32_t |
| * - uint32_t |
| * - int64_t |
| * - uint64_t |
| * |
| * Before #including this file, you must make the following macros available: |
| * - UINT32_C(n) |
| * - UINT64_C(n) |
| * - UINT32_MAX |
| * - UINT64_MAX |
| * |
| * Easiest way to achieve the above is to #include sys/types.h and inttypes.h |
| * before #including lzma.h. However, some pre-C99 libc headers don't provide |
| * all the required types in inttypes.h (that file may even be missing). |
| * Portable applications need to provide these types themselves. This way |
| * liblzma API can use the standard types instead of defining its own |
| * (e.g. lzma_uint32). |
| * |
| * Note that the API still has lzma_bool, because using stdbool.h would |
| * break C89 and C++ programs on many systems. |
| */ |
| |
| #ifndef LZMA_H |
| #define LZMA_H |
| |
| /****************** |
| * GCC extensions * |
| ******************/ |
| |
| /* |
| * GCC extensions are used conditionally in the public API. It doesn't |
| * break anything if these are sometimes enabled and sometimes not, only |
| * affects warnings and optimizations. |
| */ |
| #if defined(__GNUC__) && __GNUC__ >= 3 |
| # ifndef lzma_attribute |
| # define lzma_attribute(attr) __attribute__(attr) |
| # endif |
| # ifndef lzma_restrict |
| # define lzma_restrict __restrict__ |
| # endif |
| #else |
| # ifndef lzma_attribute |
| # define lzma_attribute(attr) |
| # endif |
| # ifndef lzma_restrict |
| # define lzma_restrict |
| # endif |
| #endif |
| |
| |
| /************** |
| * Subheaders * |
| **************/ |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| /* |
| * Subheaders check that this is defined. It is to prevent including |
| * them directly from applications. |
| */ |
| #define LZMA_H_INTERNAL 1 |
| |
| /* Basic features */ |
| #include "lzma/init.h" |
| #include "lzma/base.h" |
| #include "lzma/vli.h" |
| #include "lzma/filter.h" |
| #include "lzma/check.h" |
| |
| /* Filters */ |
| #include "lzma/copy.h" |
| #include "lzma/subblock.h" |
| #include "lzma/simple.h" |
| #include "lzma/delta.h" |
| #include "lzma/lzma.h" |
| |
| /* Container formats and Metadata */ |
| #include "lzma/block.h" |
| #include "lzma/index.h" |
| #include "lzma/extra.h" |
| #include "lzma/metadata.h" |
| #include "lzma/stream.h" |
| #include "lzma/alone.h" |
| #include "lzma/raw.h" |
| #include "lzma/auto.h" |
| #include "lzma/easy.h" |
| |
| /* Advanced features */ |
| #include "lzma/info.h" |
| #include "lzma/alignment.h" |
| #include "lzma/stream_flags.h" |
| #include "lzma/memlimit.h" |
| |
| /* Version number */ |
| #include "lzma/version.h" |
| |
| /* |
| * All subheaders included. Undefine LZMA_H_INTERNAL to prevent applications |
| * re-including the subheaders. |
| */ |
| #undef LZMA_H_INTERNAL |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* ifndef LZMA_H */ |