diff options
author | Campbell Barton <ideasman42@gmail.com> | 2013-05-28 23:42:19 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2013-05-28 23:42:19 +0400 |
commit | b5cb9e8810efd2efa4e570cf58ed3133dc31cc1b (patch) | |
tree | 71b7bf33dd8965cd47c574bcd5c0386d440ddffa | |
parent | 149b77f2bbec5f0fedab489884bd25bb69764f4d (diff) |
add BLI_sys_types.h
-rw-r--r-- | source/blender/blenlib/BLI_sys_types.h | 156 | ||||
-rw-r--r-- | source/blender/blenlib/BLI_utildefines.h | 40 |
2 files changed, 159 insertions, 37 deletions
diff --git a/source/blender/blenlib/BLI_sys_types.h b/source/blender/blenlib/BLI_sys_types.h new file mode 100644 index 00000000000..9c72433a415 --- /dev/null +++ b/source/blender/blenlib/BLI_sys_types.h @@ -0,0 +1,156 @@ +/* + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program 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 for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): none yet. + * + * ***** END GPL LICENSE BLOCK ***** + */ + +/** \file BLI_sys_types.h + * \ingroup bli + * + * A platform-independent definition of [u]intXX_t + * Plus the accompanying header include for htonl/ntohl + * + * This file includes <sys/types.h> to define [u]intXX_t types, where + * XX can be 8, 16, 32 or 64. Unfortunately, not all systems have this + * file. + * - Windows uses __intXX compiler-builtin types. These are signed, + * so we have to flip the signs. + * For these rogue platforms, we make the typedefs ourselves. + * + */ + +#ifndef __BLI_SYS_TYPES_H__ +#define __BLI_SYS_TYPES_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#if defined(_WIN32) && !defined(FREE_WINDOWS) + +/* The __intXX are built-in types of the visual compiler! So we don't + * need to include anything else here. */ + + +typedef signed __int8 int8_t; +typedef signed __int16 int16_t; +typedef signed __int32 int32_t; +typedef signed __int64 int64_t; + +typedef unsigned __int8 uint8_t; +typedef unsigned __int16 uint16_t; +typedef unsigned __int32 uint32_t; +typedef unsigned __int64 uint64_t; + +#ifndef _INTPTR_T_DEFINED +#ifdef _WIN64 +typedef __int64 intptr_t; +#else +typedef long intptr_t; +#endif +#define _INTPTR_T_DEFINED +#endif + +#ifndef _UINTPTR_T_DEFINED +#ifdef _WIN64 +typedef unsigned __int64 uintptr_t; +#else +typedef unsigned long uintptr_t; +#endif +#define _UINTPTR_T_DEFINED +#endif + +#elif defined(__linux__) || defined(__NetBSD__) || defined(__OpenBSD__) + +/* Linux-i386, Linux-Alpha, Linux-ppc */ +#include <stdint.h> + +/* XXX */ +#ifndef UINT64_MAX +# define UINT64_MAX 18446744073709551615 +typedef uint8_t u_int8_t; +typedef uint16_t u_int16_t; +typedef uint32_t u_int32_t; +typedef uint64_t u_int64_t; +#endif + +#elif defined(__APPLE__) + +#include <inttypes.h> + +#elif defined(FREE_WINDOWS) +#include <stdint.h> + +#else + +/* FreeBSD, Solaris */ +#include <sys/types.h> + +#endif /* ifdef platform for types */ + + +/* note: use of (int, TRUE / FALSE) is deprecated, + * use (bool, true / false) instead */ +#ifdef HAVE_STDBOOL_H +# include <stdbool.h> +#else +# ifndef HAVE__BOOL +# ifdef __cplusplus +typedef bool _BLI_Bool; +# else +/* using char here may cause nasty tricky bugs, e.g. + * bool is_bit_flag = RNA_property_flag(prop) & PROP_ENUM_FLAG; + * as PROP_ENUM_FLAG is farther than 8th bit, do_translate would be always false! + */ +# define _BLI_Bool unsigned int +# endif +# else +# define _BLI_Bool _Bool +# endif +# define bool _BLI_Bool +# define false 0 +# define true 1 +# define __bool_true_false_are_defined 1 +#endif + +/* remove this when we're ready to remove TRUE/FALSE completely */ +#ifdef WITH_BOOL_COMPAT +/* interim until all occurrences of these can be updated to stdbool */ +/* XXX Why not use the true/false velues here? */ +# ifndef FALSE +# define FALSE 0 +# endif + +# ifndef TRUE +# define TRUE 1 +# endif +#endif + + + +#ifdef __cplusplus +} +#endif + +#endif /* eof */ diff --git a/source/blender/blenlib/BLI_utildefines.h b/source/blender/blenlib/BLI_utildefines.h index c28726e541c..b49333fbb3c 100644 --- a/source/blender/blenlib/BLI_utildefines.h +++ b/source/blender/blenlib/BLI_utildefines.h @@ -32,47 +32,13 @@ * \ingroup bli */ +/* avoid many includes for now */ +#include "BLI_sys_types.h" + #ifndef NDEBUG /* for BLI_assert */ #include <stdio.h> #endif -/* note: use of (int, TRUE / FALSE) is deprecated, - * use (bool, true / false) instead */ -#ifdef HAVE_STDBOOL_H -# include <stdbool.h> -#else -# ifndef HAVE__BOOL -# ifdef __cplusplus -typedef bool _BLI_Bool; -# else -/* using char here may cause nasty tricky bugs, e.g. - * bool is_bit_flag = RNA_property_flag(prop) & PROP_ENUM_FLAG; - * as PROP_ENUM_FLAG is farther than 8th bit, do_translate would be always false! - */ -# define _BLI_Bool unsigned int -# endif -# else -# define _BLI_Bool _Bool -# endif -# define bool _BLI_Bool -# define false 0 -# define true 1 -# define __bool_true_false_are_defined 1 -#endif - -/* remove this when we're ready to remove TRUE/FALSE completely */ -#ifdef WITH_BOOL_COMPAT -/* interim until all occurrences of these can be updated to stdbool */ -/* XXX Why not use the true/false velues here? */ -# ifndef FALSE -# define FALSE 0 -# endif - -# ifndef TRUE -# define TRUE 1 -# endif -#endif - /* useful for finding bad use of min/max */ #if 0 /* gcc only */ |