blob: b917b7e9aeebb7a7b2ac909da6a14619dc1d27c4 [file] [log] [blame]
/*
* Copyright (c) 1997, 2003, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code 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
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
#ifndef MLIB_TYPES_H
#define MLIB_TYPES_H
#include <limits.h>
#if defined(_MSC_VER)
#include <float.h> /* for FLT_MAX and DBL_MAX */
#endif
#ifndef DBL_MAX
#define DBL_MAX 1.7976931348623157E+308 /* max decimal value of a "double" */
#endif
#ifndef FLT_MAX
#define FLT_MAX 3.402823466E+38F /* max decimal value of a "float" */
#endif
#ifndef FLT_MIN
#define FLT_MIN 1.175494351e-38F /* min normalised value of a "float" */
#endif
#ifdef __cplusplus
extern "C" {
#endif
typedef char mlib_s8;
typedef unsigned char mlib_u8;
typedef short mlib_s16;
typedef unsigned short mlib_u16;
typedef int mlib_s32;
typedef unsigned int mlib_u32;
typedef float mlib_f32;
typedef double mlib_d64;
#if defined(__SUNPRO_C) || defined(__SUNPRO_CC) || defined(__GNUC__)
#if defined(__linux__)
#include <stdint.h> /* for uintptr_t */
#include <malloc.h> /* for ptrdiff_t */
#else
#include <link.h> /* for uintptr_t */
#include <stddef.h> /* for ptrdiff_t */
#endif /* __linux__ */
#ifdef MLIB_OS64BIT
typedef long mlib_s64;
typedef unsigned long mlib_u64;
#define MLIB_S64_MIN LONG_MIN
#define MLIB_S64_MAX LONG_MAX
#define MLIB_S64_CONST(x) x##L
#define MLIB_U64_CONST(x) x##UL
#elif (__STDC__ - 0 == 0) || defined(__GNUC__)
#if defined(_NO_LONGLONG)
typedef union {
mlib_d64 d64;
mlib_s32 s32[2];
} mlib_s64;
typedef union {
mlib_d64 d64;
mlib_u32 u32[2];
} mlib_u64;
#else
typedef long long mlib_s64;
typedef unsigned long long mlib_u64;
#define MLIB_S64_MIN LLONG_MIN
#define MLIB_S64_MAX LLONG_MAX
#define MLIB_S64_CONST(x) x##LL
#define MLIB_U64_CONST(x) x##ULL
#endif /* !defined(_NO_LONGLONG) */
#endif /* MLIB_OS64BIT */
#elif defined(_MSC_VER)
#if defined(_NO_LONGLONG)
typedef union {
mlib_d64 d64;
mlib_s32 s32[2];
} mlib_s64;
typedef union {
mlib_d64 d64;
mlib_u32 u32[2];
} mlib_u64;
#else
typedef __int64 mlib_s64;
typedef unsigned __int64 mlib_u64;
#define MLIB_S64_MIN _I64_MIN
#define MLIB_S64_MAX _I64_MAX
#define MLIB_S64_CONST(x) x##I64
#define MLIB_U64_CONST(x) x##UI64
#endif /* !defined(_NO_LONGLONG) */
#include <stddef.h>
#if !defined(_WIN64)
typedef int intptr_t;
typedef unsigned int uintptr_t;
#endif /* _WIN64 */
#else
#error "unknown platform"
#endif
typedef uintptr_t mlib_addr;
typedef void* mlib_ras;
#define MLIB_S8_MIN SCHAR_MIN
#define MLIB_S8_MAX SCHAR_MAX
#define MLIB_U8_MIN 0
#define MLIB_U8_MAX UCHAR_MAX
#define MLIB_S16_MIN SHRT_MIN
#define MLIB_S16_MAX SHRT_MAX
#define MLIB_U16_MIN 0
#define MLIB_U16_MAX USHRT_MAX
#define MLIB_S32_MIN INT_MIN
#define MLIB_S32_MAX INT_MAX
#define MLIB_U32_MIN 0
#define MLIB_U32_MAX UINT_MAX
#define MLIB_F32_MIN -FLT_MAX
#define MLIB_F32_MAX FLT_MAX
#define MLIB_D64_MIN -DBL_MAX
#define MLIB_D64_MAX DBL_MAX
#ifdef __cplusplus
}
#endif
#endif /* MLIB_TYPES_H */