diff options
Diffstat (limited to 'include/ruby/defines.h')
| -rw-r--r-- | include/ruby/defines.h | 313 |
1 files changed, 78 insertions, 235 deletions
diff --git a/include/ruby/defines.h b/include/ruby/defines.h index 2fb42219fa..48184f8a18 100644 --- a/include/ruby/defines.h +++ b/include/ruby/defines.h @@ -1,273 +1,116 @@ -/************************************************ - - defines.h - - - $Author$ - $Date$ - created at: Wed May 18 00:21:44 JST 1994 - -************************************************/ - -#ifndef RUBY_DEFINES_H +#ifndef RUBY_DEFINES_H /*-*-C++-*-vi:se ft=cpp:*/ #define RUBY_DEFINES_H 1 +/** + * @file + * @author $Author$ + * @date Wed May 18 00:21:44 JST 1994 + * @copyright This file is a part of the programming language Ruby. + * Permission is hereby granted, to either redistribute and/or + * modify this file, provided that the conditions mentioned in the + * file COPYING are met. Consult the file for details. + */ -#if defined(__cplusplus) -extern "C" { -#if 0 -} /* satisfy cc-mode */ -#endif -#endif - -#define RUBY +#include "ruby/internal/config.h" -#include <stdlib.h> -#ifdef __cplusplus -# ifndef HAVE_PROTOTYPES -# define HAVE_PROTOTYPES 1 -# endif -# ifndef HAVE_STDARG_PROTOTYPES -# define HAVE_STDARG_PROTOTYPES 1 -# endif -#endif +/* AC_INCLUDES_DEFAULT */ +#include <stdio.h> -#undef _ -#ifdef HAVE_PROTOTYPES -# define _(args) args -#else -# define _(args) () +#ifdef HAVE_SYS_TYPES_H +# include <sys/types.h> #endif -#undef __ -#ifdef HAVE_STDARG_PROTOTYPES -# define __(args) args -#else -# define __(args) () +#ifdef HAVE_SYS_STAT_H +# include <sys/stat.h> #endif -#ifdef __cplusplus -#define ANYARGS ... +#ifdef STDC_HEADERS +# include <stdlib.h> +# include <stddef.h> #else -#define ANYARGS -#endif - -#define xmalloc ruby_xmalloc -#define xmalloc2 ruby_xmalloc2 -#define xcalloc ruby_xcalloc -#define xrealloc ruby_xrealloc -#define xrealloc2 ruby_xrealloc2 -#define xfree ruby_xfree - -void *xmalloc(size_t); -void *xmalloc2(size_t,size_t); -void *xcalloc(size_t,size_t); -void *xrealloc(void*,size_t); -void *xrealloc2(void*,size_t,size_t); -void xfree(void*); - -#if SIZEOF_LONG_LONG > 0 -# define LONG_LONG long long -#elif SIZEOF___INT64 > 0 -# define HAVE_LONG_LONG 1 -# define LONG_LONG __int64 -# undef SIZEOF_LONG_LONG -# define SIZEOF_LONG_LONG SIZEOF___INT64 -#endif - -#if SIZEOF_INT*2 <= SIZEOF_LONG_LONG -# define BDIGIT unsigned int -# define SIZEOF_BDIGITS SIZEOF_INT -# define BDIGIT_DBL unsigned LONG_LONG -# define BDIGIT_DBL_SIGNED LONG_LONG -#elif SIZEOF_INT*2 <= SIZEOF_LONG -# define BDIGIT unsigned int -# define SIZEOF_BDIGITS SIZEOF_INT -# define BDIGIT_DBL unsigned long -# define BDIGIT_DBL_SIGNED long -#elif SIZEOF_SHORT*2 <= SIZEOF_LONG -# define BDIGIT unsigned short -# define SIZEOF_BDIGITS SIZEOF_SHORT -# define BDIGIT_DBL unsigned long -# define BDIGIT_DBL_SIGNED long -#else -# define BDIGIT unsigned short -# define SIZEOF_BDIGITS (SIZEOF_LONG/2) -# define BDIGIT_DBL unsigned long -# define BDIGIT_DBL_SIGNED long +# ifdef HAVE_STDLIB_H +# include <stdlib.h> +# endif #endif -#ifdef __CYGWIN__ -#undef _WIN32 +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include <memory.h> +# endif +# include <string.h> #endif -#if defined(MSDOS) || defined(_WIN32) || defined(__human68k__) || defined(__EMX__) -#define DOSISH 1 -#ifndef _WIN32_WCE -# define DOSISH_DRIVE_LETTER -#endif +#ifdef HAVE_STRINGS_H +# include <strings.h> #endif -#ifdef __NeXT__ -/* NextStep, OpenStep, Rhapsody */ -#ifndef S_IRUSR -#define S_IRUSR 0000400 /* read permission, owner */ -#endif -#ifndef S_IRGRP -#define S_IRGRP 0000040 /* read permission, group */ -#endif -#ifndef S_IROTH -#define S_IROTH 0000004 /* read permission, other */ -#endif -#ifndef S_IWUSR -#define S_IWUSR 0000200 /* write permission, owner */ -#endif -#ifndef S_IWGRP -#define S_IWGRP 0000020 /* write permission, group */ -#endif -#ifndef S_IWOTH -#define S_IWOTH 0000002 /* write permission, other */ -#endif -#ifndef S_IXUSR -#define S_IXUSR 0000100 /* execute/search permission, owner */ -#endif -#ifndef S_IXGRP -#define S_IXGRP 0000010 /* execute/search permission, group */ -#endif -#ifndef S_IXOTH -#define S_IXOTH 0000001 /* execute/search permission, other */ +#ifdef HAVE_INTTYPES_H +# include <inttypes.h> #endif -#ifndef S_IRWXU -#define S_IRWXU 0000700 /* read, write, execute permissions, owner */ -#endif -#ifndef S_IRWXG -#define S_IRWXG 0000070 /* read, write, execute permissions, group */ -#endif -#ifndef S_IRWXO -#define S_IRWXO 0000007 /* read, write, execute permissions, other */ -#endif -#ifndef S_ISBLK -#define S_ISBLK(mode) (((mode) & (0170000)) == (0060000)) -#endif -#ifndef S_ISCHR -#define S_ISCHR(mode) (((mode) & (0170000)) == (0020000)) -#endif -#ifndef S_ISDIR -#define S_ISDIR(mode) (((mode) & (0170000)) == (0040000)) -#endif -#ifndef S_ISFIFO -#define S_ISFIFO(mode) (((mode) & (0170000)) == (0010000)) -#endif -#ifndef S_ISREG -#define S_ISREG(mode) (((mode) & (0170000)) == (0100000)) -#endif -/* Do not trust WORDS_BIGENDIAN from configure since -arch compiler flag may - result in a different endian. Instead trust __BIG_ENDIAN__ and - __LITTLE_ENDIAN__ which are set correctly by -arch. */ -#undef WORDS_BIGENDIAN -#ifdef __BIG_ENDIAN__ -#define WORDS_BIGENDIAN -#endif -#ifndef __APPLE__ -/* NextStep, OpenStep (but not Rhapsody) */ -#ifndef GETPGRP_VOID -#define GETPGRP_VOID 1 -#endif -#ifndef WNOHANG -#define WNOHANG 01 -#endif -#ifndef WUNTRACED -#define WUNTRACED 02 -#endif -#ifndef X_OK -#define X_OK 1 -#endif -#endif /* __APPLE__ */ -#endif /* NeXT */ -#ifdef _WIN32 -#include "ruby/win32.h" +#ifdef HAVE_STDINT_H +# include <stdint.h> #endif -#if defined(__VMS) -#include "vms/vms.h" +#ifdef HAVE_STDALIGN_H +# include <stdalign.h> #endif -#if defined(__BEOS__) -#include <net/socket.h> /* intern.h needs fd_set definition */ +#ifdef HAVE_UNISTD_H +# include <unistd.h> #endif -#ifdef RUBY_EXPORT -#undef RUBY_EXTERN +#ifdef HAVE_SYS_SELECT_H +# include <sys/select.h> #endif -#ifndef RUBY_EXTERN -#define RUBY_EXTERN extern +#ifdef RUBY_USE_SETJMPEX +# include <setjmpex.h> #endif -#ifndef EXTERN -#define EXTERN RUBY_EXTERN /* deprecated */ -#endif +#include "ruby/internal/dllexport.h" +#include "ruby/internal/xmalloc.h" +#include "ruby/backward/2/assume.h" +#include "ruby/backward/2/attributes.h" +#include "ruby/backward/2/bool.h" +#include "ruby/backward/2/long_long.h" +#include "ruby/backward/2/stdalign.h" +#include "ruby/backward/2/stdarg.h" +#include "ruby/internal/dosish.h" +#include "ruby/missing.h" -#ifndef RUBY_MBCHAR_MAXSIZE -#define RUBY_MBCHAR_MAXSIZE INT_MAX - /* MB_CUR_MAX will not work well in C locale */ -#endif +/** + * Asserts that the compilation unit includes Ruby's CAPI. This has been here + * since the very beginning (at least since version 0.49). + */ +#define RUBY -#if defined(sparc) || defined(__sparc__) -static inline void -flush_register_windows(void) -{ - asm #ifdef __GNUC__ - volatile -#endif -# if defined(__sparc_v9__) || defined(__sparcv9) || defined(__arch64__) - ("flushw") -# else - ("ta 0x03") -# endif /* trap always to flush register windows if we are on a Sparc system */ - ; -} -# define FLUSH_REGISTER_WINDOWS flush_register_windows() -#elif defined(__ia64) -void *rb_ia64_bsp(void); -void rb_ia64_flushrs(void); -# define FLUSH_REGISTER_WINDOWS rb_ia64_flushrs() -#else -# define FLUSH_REGISTER_WINDOWS ((void)0) -#endif - -#if defined(DOSISH) -#define PATH_SEP ";" -#elif defined(riscos) -#define PATH_SEP "," +# /** This is expanded to nothing for non-GCC compilers. */ +# define RB_GNUC_EXTENSION __extension__ +# /** This is expanded to the passed token for non-GCC compilers. */ +# define RB_GNUC_EXTENSION_BLOCK(x) __extension__ ({ x; }) #else -#define PATH_SEP ":" +# define RB_GNUC_EXTENSION +# define RB_GNUC_EXTENSION_BLOCK(x) (x) #endif -#define PATH_SEP_CHAR PATH_SEP[0] -#if defined(__human68k__) -#define PATH_ENV "path" -#else -#define PATH_ENV "PATH" -#endif +/** @cond INTERNAL_MACRO */ -#if defined(DOSISH) && !defined(__human68k__) && !defined(__EMX__) -#define ENV_IGNORECASE -#endif - -#ifndef DLEXT_MAXLEN -#define DLEXT_MAXLEN 4 -#endif - -#ifndef RUBY_PLATFORM -#define RUBY_PLATFORM "unknown-unknown" +/* :FIXME: Can someone tell us why is this macro defined here? @shyouhei + * thinks this is a truly internal macro but cannot move around because he + * doesn't understand the reason of this arrangement. */ +#ifndef RUBY_MBCHAR_MAXSIZE +# define RUBY_MBCHAR_MAXSIZE INT_MAX +# /* MB_CUR_MAX will not work well in C locale */ #endif -#if defined(__cplusplus) -#if 0 -{ /* satisfy cc-mode */ -#endif -} /* extern "C" { */ +#if defined(__sparc) +RBIMPL_SYMBOL_EXPORT_BEGIN() +void rb_sparc_flush_register_windows(void); +RBIMPL_SYMBOL_EXPORT_END() +# define FLUSH_REGISTER_WINDOWS rb_sparc_flush_register_windows() +#else +# define FLUSH_REGISTER_WINDOWS ((void)0) #endif - +/** @endcond */ #endif /* RUBY_DEFINES_H */ |
