1/***** 2* 3* Copyright (C) 2004-2015 CS-SI. All Rights Reserved. 4* Author: Yoann Vandoorselaere <yoann.v@prelude-ids.com> 5* 6* This file is part of the Prelude library. 7* 8* This program is free software; you can redistribute it and/or modify 9* it under the terms of the GNU General Public License as published by 10* the Free Software Foundation; either version 2, or (at your option) 11* any later version. 12* 13* This program is distributed in the hope that it will be useful, 14* but WITHOUT ANY WARRANTY; without even the implied warranty of 15* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16* GNU General Public License for more details. 17* 18* You should have received a copy of the GNU General Public License along 19* with this program; if not, write to the Free Software Foundation, Inc., 20* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 21* 22*****/ 23 24#ifndef _LIBPRELUDE_INTTYPES_H 25#define _LIBPRELUDE_INTTYPES_H 26 27#ifdef __cplusplus 28 extern "C" { 29#endif 30 31/* 32 * Defined by ax_create_prelude_inttypes_h.m4 33 */ 34@__PRELUDE_HAVE_STDINT_H@ 35@__PRELUDE_HAVE_INTTYPES_H@ 36@__PRELUDE_HAVE_64BIT_LONG@ 37@__PRELUDE_STDINT_HAVE_UINT8@ 38@__PRELUDE_STDINT_HAVE_UINT16@ 39@__PRELUDE_STDINT_HAVE_UINT32@ 40@__PRELUDE_STDINT_HAVE_UINT64@ 41@__PRELUDE_64BIT_FORMAT_PREFIX@ 42 43#ifdef __PRELUDE_HAVE_64BIT_LONG 44 #define __PRELUDE_INT64_SUFFIX(x) x ## L 45 #define __PRELUDE_UINT64_SUFFIX(x) x ## UL 46#else 47 #define __PRELUDE_INT64_SUFFIX(x) x ## LL 48 #define __PRELUDE_UINT64_SUFFIX(x) x ##ULL 49#endif 50 51#ifdef HAVE_CONFIG_H 52# include "config.h" 53#endif 54 55#ifdef __PRELUDE_HAVE_STDINT_H 56# include <stdint.h> 57#endif 58 59#ifdef __PRELUDE_HAVE_INTTYPES_H 60# include <inttypes.h> 61#endif 62 63#include <limits.h> 64 65#ifndef TRUE 66# define TRUE 1 67#endif 68 69#ifndef FALSE 70# define FALSE 0 71#endif 72 73 74 75/* 76 * Minimum of signed integral types. 77 */ 78#define PRELUDE_INT8_MIN (-128) 79#define PRELUDE_INT16_MIN (-32767 - 1) 80#define PRELUDE_INT32_MIN (-2147483647 - 1) 81#define PRELUDE_INT64_MIN (-__PRELUDE_INT64_SUFFIX(9223372036854775807) - 1) 82 83 84 85/* 86 * Maximum of signed integral types. 87 */ 88#define PRELUDE_INT8_MAX (127) 89#define PRELUDE_INT16_MAX (32767) 90#define PRELUDE_INT32_MAX (2147483647) 91#define PRELUDE_INT64_MAX (__PRELUDE_INT64_SUFFIX(9223372036854775807)) 92 93 94/* 95 * Maximum of unsigned integral types. 96 */ 97#define PRELUDE_UINT8_MAX (255) 98#define PRELUDE_UINT16_MAX (65535) 99#define PRELUDE_UINT32_MAX (4294967295U) 100#define PRELUDE_UINT64_MAX (__PRELUDE_UINT64_SUFFIX(18446744073709551615)) 101 102 103/* 104 * Other 105 */ 106#define PRELUDE_INTMAX_MIN INT64_MIN 107#define PRELUDE_INTMAX_MAX INT64_MAX 108#define PRELUDE_UINTMAX_MAX UINT64_MAX 109 110 111/* 112 * Tandem NonStop R series and compatible platforms released before 113 * July 2005 support %Ld but not %lld. 114 */ 115# if defined _TNS_R_TARGET 116# define _LONG_LONG_FORMAT_PREFIX "L" 117# else 118# define _LONG_LONG_FORMAT_PREFIX "ll" 119# endif 120 121#if PRELUDE_INT64_MAX == LONG_MAX 122# define __PRELUDE_64BIT_FORMAT_PREFIX "l" 123#elif defined _MSC_VER || defined __MINGW32__ 124# define __PRELUDE_64BIT_FORMAT_PREFIX "I64" 125#elif @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1 126# define __PRELUDE_64BIT_FORMAT_PREFIX _LONG_LONG_FORMAT_PREFIX 127#endif 128 129 130 131/* 132 * format specifier 133 */ 134#define PRELUDE_PRId64 __PRELUDE_64BIT_FORMAT_PREFIX "d" 135#define PRELUDE_PRIi64 __PRELUDE_64BIT_FORMAT_PREFIX "i" 136#define PRELUDE_PRIo64 __PRELUDE_64BIT_FORMAT_PREFIX "o" 137#define PRELUDE_PRIx64 __PRELUDE_64BIT_FORMAT_PREFIX "x" 138#define PRELUDE_PRIX64 __PRELUDE_64BIT_FORMAT_PREFIX "X" 139#define PRELUDE_PRIu64 __PRELUDE_64BIT_FORMAT_PREFIX "u" 140 141#define PRELUDE_PRId32 "d" 142#define PRELUDE_PRIi32 "i" 143#define PRELUDE_PRIo32 "o" 144#define PRELUDE_PRIx32 "x" 145#define PRELUDE_PRIX32 "X" 146#define PRELUDE_PRIu32 "u" 147 148#define PRELUDE_PRId16 "d" 149#define PRELUDE_PRIi16 "i" 150#define PRELUDE_PRIo16 "o" 151#define PRELUDE_PRIx16 "x" 152#define PRELUDE_PRIX16 "X" 153#define PRELUDE_PRIu16 "u" 154 155#define PRELUDE_PRId8 "d" 156#define PRELUDE_PRIi8 "i" 157#define PRELUDE_PRIo8 "o" 158#define PRELUDE_PRIx8 "x" 159#define PRELUDE_PRIX8 "X" 160#define PRELUDE_PRIu8 "u" 161 162#define PRELUDE_SCNd64 __PRELUDE_64BIT_FORMAT_PREFIX "d" 163#define PRELUDE_SCNi64 __PRELUDE_64BIT_FORMAT_PREFIX "i" 164#define PRELUDE_SCNo64 __PRELUDE_64BIT_FORMAT_PREFIX "o" 165#define PRELUDE_SCNx64 __PRELUDE_64BIT_FORMAT_PREFIX "x" 166#define PRELUDE_SCNu64 __PRELUDE_64BIT_FORMAT_PREFIX "u" 167 168#define PRELUDE_SCNd32 "d" 169#define PRELUDE_SCNi32 "i" 170#define PRELUDE_SCNo32 "o" 171#define PRELUDE_SCNx32 "x" 172#define PRELUDE_SCNu32 "u" 173 174#define PRELUDE_SCNd16 "hd" 175#define PRELUDE_SCNi16 "hi" 176#define PRELUDE_SCNo16 "ho" 177#define PRELUDE_SCNx16 "hx" 178#define PRELUDE_SCNu16 "hu" 179 180#define PRELUDE_SCNd8 "hhd" 181#define PRELUDE_SCNi8 "hhi" 182#define PRELUDE_SCNo8 "hho" 183#define PRELUDE_SCNx8 "hhx" 184#define PRELUDE_SCNu8 "hhu" 185 186 187/* 188 * Type definition 189 */ 190typedef enum { 191 PRELUDE_BOOL_TRUE = TRUE, 192 PRELUDE_BOOL_FALSE = FALSE 193} prelude_bool_t; 194 195 196#ifndef __PRELUDE_STDINT_HAVE_UINT8 197 typedef signed char int8_t; 198 typedef unsigned char uint8_t; 199#endif 200 201 202#ifndef __PRELUDE_STDINT_HAVE_UINT16 203 typedef short int16_t; 204 typedef unsigned short uint16_t; 205#endif 206 207#ifndef __PRELUDE_STDINT_HAVE_UINT32 208 typedef int int32_t; 209 typedef unsigned int uint32_t; 210#endif 211 212#ifndef __PRELUDE_STDINT_HAVE_UINT64 213# ifdef __PRELUDE_HAVE_64BIT_LONG 214 215 typedef long int64_t; 216 typedef unsigned long uint64_t; 217 218# else 219 220 typedef long long int64_t; 221 typedef unsigned long long uint64_t; 222 223# endif 224#endif 225 226#ifdef __cplusplus 227 } 228#endif 229 230#endif /* _LIBPRELUDE_INTTYPES_H */ 231