133 lines
3.2 KiB
C
133 lines
3.2 KiB
C
/*
|
|
* Copyright (c) 2016-2020, Facebook, Inc.
|
|
* All rights reserved.
|
|
*
|
|
* This source code is licensed under both the BSD-style license (found in the
|
|
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
|
* in the COPYING file in the root directory of this source tree).
|
|
* You may select, at your option, one of the above-listed licenses.
|
|
*/
|
|
|
|
/* Need:
|
|
* ZSTD_memcpy()
|
|
* ZSTD_memset()
|
|
* ZSTD_memmove()
|
|
* BYTE
|
|
* S16
|
|
* U16
|
|
* U32
|
|
* U64
|
|
* size_t
|
|
* ptrdiff_t
|
|
* INT_MAX
|
|
* ...
|
|
*/
|
|
#ifndef ZSTD_DEPS_COMMON
|
|
#define ZSTD_DEPS_COMMON
|
|
|
|
#include <limits.h>
|
|
#include <stddef.h>
|
|
#include <string.h>
|
|
|
|
#if defined(__GNUC__) && __GNUC__ >= 4
|
|
# define ZSTD_memcpy(d,s,l) __builtin_memcpy((d),(s),(l))
|
|
# define ZSTD_memmove(d,s,l) __builtin_memmove((d),(s),(l))
|
|
# define ZSTD_memset(p,v,l) __builtin_memset((p),(v),(l))
|
|
#else
|
|
# define ZSTD_memcpy(d,s,l) memcpy((d),(s),(l))
|
|
# define ZSTD_memmove(d,s,l) memmove((d),(s),(l))
|
|
# define ZSTD_memset(p,v,l) memset((p),(v),(l))
|
|
#endif
|
|
|
|
/*-**************************************************************
|
|
* Basic Types
|
|
*****************************************************************/
|
|
#if !defined (__VMS) && (defined (__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) )
|
|
# include <stdint.h>
|
|
typedef uint8_t BYTE;
|
|
typedef uint16_t U16;
|
|
typedef int16_t S16;
|
|
typedef uint32_t U32;
|
|
typedef int32_t S32;
|
|
typedef uint64_t U64;
|
|
typedef int64_t S64;
|
|
#else
|
|
# include <limits.h>
|
|
#if CHAR_BIT != 8
|
|
# error "this implementation requires char to be exactly 8-bit type"
|
|
#endif
|
|
typedef unsigned char BYTE;
|
|
#if USHRT_MAX != 65535
|
|
# error "this implementation requires short to be exactly 16-bit type"
|
|
#endif
|
|
typedef unsigned short U16;
|
|
typedef signed short S16;
|
|
#if UINT_MAX != 4294967295
|
|
# error "this implementation requires int to be exactly 32-bit type"
|
|
#endif
|
|
typedef unsigned int U32;
|
|
typedef signed int S32;
|
|
/* note : there are no limits defined for long long type in C90.
|
|
* limits exist in C99, however, in such case, <stdint.h> is preferred */
|
|
typedef unsigned long long U64;
|
|
typedef signed long long S64;
|
|
#endif
|
|
|
|
#endif /* ZSTD_DEPS_COMMON */
|
|
|
|
/* Need:
|
|
* ZSTD_malloc()
|
|
* ZSTD_free()
|
|
* ZSTD_calloc()
|
|
*/
|
|
#ifdef ZSTD_DEPS_NEED_MALLOC
|
|
#ifndef ZSTD_DEPS_MALLOC
|
|
#define ZSTD_DEPS_MALLOC
|
|
|
|
#include <stdlib.h>
|
|
|
|
#define ZSTD_malloc(s) malloc(s)
|
|
#define ZSTD_calloc(n,s) calloc((n), (s))
|
|
#define ZSTD_free(p) free((p))
|
|
|
|
#endif /* ZSTD_DEPS_MALLOC */
|
|
#endif /* ZSTD_DEPS_NEED_MALLOC */
|
|
|
|
/* Need:
|
|
* assert()
|
|
*/
|
|
#ifdef ZSTD_DEPS_NEED_ASSERT
|
|
#ifndef ZSTD_DEPS_ASSERT
|
|
#define ZSTD_DEPS_ASSERT
|
|
|
|
#include <assert.h>
|
|
|
|
#endif /* ZSTD_DEPS_ASSERT */
|
|
#endif /* ZSTD_DEPS_NEED_ASSERT */
|
|
|
|
/* Need:
|
|
* ZSTD_DEBUG_PRINT()
|
|
*/
|
|
#ifdef ZSTD_DEPS_NEED_IO
|
|
#ifndef ZSTD_DEPS_IO
|
|
#define ZSTD_DEPS_IO
|
|
|
|
#include <stdio.h>
|
|
#define ZSTD_DEBUG_PRINT(...) fprintf(stderr, __VA_ARGS__)
|
|
|
|
#endif /* ZSTD_DEPS_IO */
|
|
#endif /* ZSTD_DEPS_NEED_IO */
|
|
|
|
/* Only requested when <stdint.h> is known to be present.
|
|
* Need:
|
|
* intptr_t
|
|
*/
|
|
#ifdef ZSTD_DEPS_NEED_STDINT
|
|
#ifndef ZSTD_DEPS_STDINT
|
|
#define ZSTD_DEPS_STDINT
|
|
|
|
#include <stdint.h>
|
|
|
|
#endif /* ZSTD_DEPS_STDINT */
|
|
#endif /* ZSTD_DEPS_NEED_STDINT */
|