Ruby 1.9.2p136(2010-12-25revision30365)

- Main Page
- Modules
- Data Structures
- Files

- File List
- Globals

# include/ruby/defines.h

Go to the documentation of this file.

    00001 /************************************************
    00002
    00003   defines.h -
    00004
    00005   $Author: naruse $
    00006   created at: Wed May 18 00:21:44 JST 1994
    00007
    00008 ************************************************/
    00009
    00010 #ifndef RUBY_DEFINES_H
    00011 #define RUBY_DEFINES_H 1
    00012
    00013 #if defined(__cplusplus)
    00014 extern "C" {
    00015 #if 0
    00016 } /* satisfy cc-mode */
    00017 #endif
    00018 #endif
    00019
    00020 #define RUBY
    00021
    00022 #include <stdlib.h>
    00023 #ifdef __cplusplus
    00024 # ifndef  HAVE_PROTOTYPES
    00025 #  define HAVE_PROTOTYPES 1
    00026 # endif
    00027 # ifndef  HAVE_STDARG_PROTOTYPES
    00028 #  define HAVE_STDARG_PROTOTYPES 1
    00029 # endif
    00030 #endif
    00031
    00032 #undef _
    00033 #ifdef HAVE_PROTOTYPES
    00034 # define _(args) args
    00035 #else
    00036 # define _(args) ()
    00037 #endif
    00038
    00039 #undef __
    00040 #ifdef HAVE_STDARG_PROTOTYPES
    00041 # define __(args) args
    00042 #else
    00043 # define __(args) ()
    00044 #endif
    00045
    00046 #ifdef __cplusplus
    00047 #define ANYARGS ...
    00048 #else
    00049 #define ANYARGS
    00050 #endif
    00051
    00052 #define xmalloc ruby_xmalloc
    00053 #define xmalloc2 ruby_xmalloc2
    00054 #define xcalloc ruby_xcalloc
    00055 #define xrealloc ruby_xrealloc
    00056 #define xrealloc2 ruby_xrealloc2
    00057 #define xfree ruby_xfree
    00058
    00059 void *xmalloc(size_t);
    00060 void *xmalloc2(size_t,size_t);
    00061 void *xcalloc(size_t,size_t);
    00062 void *xrealloc(void*,size_t);
    00063 void *xrealloc2(void*,size_t,size_t);
    00064 void xfree(void*);
    00065
    00066 #define STRINGIZE(expr) STRINGIZE0(expr)
    00067 #ifndef STRINGIZE0
    00068 #define STRINGIZE0(expr) #expr
    00069 #endif
    00070
    00071 #if SIZEOF_LONG_LONG > 0
    00072 # define LONG_LONG long long
    00073 #elif SIZEOF___INT64 > 0
    00074 # define HAVE_LONG_LONG 1
    00075 # define LONG_LONG __int64
    00076 # undef SIZEOF_LONG_LONG
    00077 # define SIZEOF_LONG_LONG SIZEOF___INT64
    00078 #endif
    00079
    00080 #if SIZEOF_INT*2 <= SIZEOF_LONG_LONG
    00081 # define BDIGIT unsigned int
    00082 # define SIZEOF_BDIGITS SIZEOF_INT
    00083 # define BDIGIT_DBL unsigned LONG_LONG
    00084 # define BDIGIT_DBL_SIGNED LONG_LONG
    00085 #elif SIZEOF_INT*2 <= SIZEOF_LONG
    00086 # define BDIGIT unsigned int
    00087 # define SIZEOF_BDIGITS SIZEOF_INT
    00088 # define BDIGIT_DBL unsigned long
    00089 # define BDIGIT_DBL_SIGNED long
    00090 #elif SIZEOF_SHORT*2 <= SIZEOF_LONG
    00091 # define BDIGIT unsigned short
    00092 # define SIZEOF_BDIGITS SIZEOF_SHORT
    00093 # define BDIGIT_DBL unsigned long
    00094 # define BDIGIT_DBL_SIGNED long
    00095 #else
    00096 # define BDIGIT unsigned short
    00097 # define SIZEOF_BDIGITS (SIZEOF_LONG/2)
    00098 # define BDIGIT_DBL unsigned long
    00099 # define BDIGIT_DBL_SIGNED long
    00100 #endif
    00101
    00102 #ifdef INFINITY
    00103 # define HAVE_INFINITY
    00104 #else
    00105
    00106 extern const unsigned char rb_infinity[];
    00107 # define INFINITY (*(float *)rb_infinity)
    00108 #endif
    00109
    00110 #ifdef NAN
    00111 # define HAVE_NAN
    00112 #else
    00113
    00114 extern const unsigned char rb_nan[];
    00115 # define NAN (*(float *)rb_nan)
    00116 #endif
    00117
    00118 #ifdef __CYGWIN__
    00119 #undef _WIN32
    00120 #endif
    00121
    00122 #if defined(_WIN32) || defined(__EMX__)
    00123 #define DOSISH 1
    00124 # define DOSISH_DRIVE_LETTER
    00125 #endif
    00126
    00127 #ifdef AC_APPLE_UNIVERSAL_BUILD
    00128 #undef WORDS_BIGENDIAN
    00129 #ifdef __BIG_ENDIAN__
    00130 #define WORDS_BIGENDIAN
    00131 #endif
    00132 #endif
    00133
    00134 #ifdef __NeXT__
    00135 /* NextStep, OpenStep, Rhapsody */
    00136 #ifndef S_IRUSR
    00137 #define S_IRUSR 0000400        /* read permission, owner */
    00138 #endif
    00139 #ifndef S_IRGRP
    00140 #define S_IRGRP 0000040        /* read permission, group */
    00141 #endif
    00142 #ifndef S_IROTH
    00143 #define S_IROTH 0000004        /* read permission, other */
    00144 #endif
    00145 #ifndef S_IWUSR
    00146 #define S_IWUSR 0000200        /* write permission, owner */
    00147 #endif
    00148 #ifndef S_IWGRP
    00149 #define S_IWGRP 0000020        /* write permission, group */
    00150 #endif
    00151 #ifndef S_IWOTH
    00152 #define S_IWOTH 0000002        /* write permission, other */
    00153 #endif
    00154 #ifndef S_IXUSR
    00155 #define S_IXUSR 0000100        /* execute/search permission, owner */
    00156 #endif
    00157 #ifndef S_IXGRP
    00158 #define S_IXGRP 0000010        /* execute/search permission, group */
    00159 #endif
    00160 #ifndef S_IXOTH
    00161 #define S_IXOTH 0000001        /* execute/search permission, other */
    00162 #endif
    00163 #ifndef S_IRWXU
    00164 #define S_IRWXU 0000700        /* read, write, execute permissions, owner */
    00165 #endif
    00166 #ifndef S_IRWXG
    00167 #define S_IRWXG 0000070        /* read, write, execute permissions, group */
    00168 #endif
    00169 #ifndef S_IRWXO
    00170 #define S_IRWXO 0000007        /* read, write, execute permissions, other */
    00171 #endif
    00172 #ifndef S_ISBLK
    00173 #define S_ISBLK(mode)  (((mode) & (0170000)) == (0060000))
    00174 #endif
    00175 #ifndef S_ISCHR
    00176 #define S_ISCHR(mode)  (((mode) & (0170000)) == (0020000))
    00177 #endif
    00178 #ifndef S_ISDIR
    00179 #define S_ISDIR(mode)  (((mode) & (0170000)) == (0040000))
    00180 #endif
    00181 #ifndef S_ISFIFO
    00182 #define S_ISFIFO(mode) (((mode) & (0170000)) == (0010000))
    00183 #endif
    00184 #ifndef S_ISREG
    00185 #define S_ISREG(mode)  (((mode) & (0170000)) == (0100000))
    00186 #endif
    00187 #ifndef __APPLE__
    00188 /* NextStep, OpenStep (but not Rhapsody) */
    00189 #ifndef GETPGRP_VOID
    00190 #define GETPGRP_VOID 1
    00191 #endif
    00192 #ifndef WNOHANG
    00193 #define WNOHANG 01
    00194 #endif
    00195 #ifndef WUNTRACED
    00196 #define WUNTRACED 02
    00197 #endif
    00198 #ifndef X_OK
    00199 #define X_OK 1
    00200 #endif
    00201 #endif /* __APPLE__ */
    00202 #endif /* NeXT */
    00203
    00204 #ifdef _WIN32
    00205 #include "ruby/win32.h"
    00206 #endif
    00207
    00208 #if defined(__BEOS__) && !defined(__HAIKU__) && !defined(BONE)
    00209 #include <net/socket.h> /* intern.h needs fd_set definition */
    00210 #elif defined (__SYMBIAN32__) && defined (HAVE_SYS_SELECT_H)
    00211 # include <sys/select.h>
    00212 #endif
    00213
    00214 #ifdef __SYMBIAN32__
    00215 # define FALSE 0
    00216 # define TRUE 1
    00217 #endif
    00218
    00219 #ifdef RUBY_EXPORT
    00220 #undef RUBY_EXTERN
    00221
    00222 #ifndef FALSE
    00223 # define FALSE 0
    00224 #elif FALSE
    00225 # error FALSE must be false
    00226 #endif
    00227 #ifndef TRUE
    00228 # define TRUE 1
    00229 #elif !TRUE
    00230 # error TRUE must be true
    00231 #endif
    00232
    00233 #endif
    00234
    00235 #ifndef RUBY_EXTERN
    00236 #define RUBY_EXTERN extern
    00237 #endif
    00238
    00239 #ifndef EXTERN
    00240 #define EXTERN RUBY_EXTERN      /* deprecated */
    00241 #endif
    00242
    00243 #ifndef RUBY_MBCHAR_MAXSIZE
    00244 #define RUBY_MBCHAR_MAXSIZE INT_MAX
    00245         /* MB_CUR_MAX will not work well in C locale */
    00246 #endif
    00247
    00248 #if defined(sparc) || defined(__sparc__)
    00249 static inline void
    00250 flush_register_windows(void)
    00251 {
    00252     asm
    00253 #ifdef __GNUC__
    00254         volatile
    00255 #endif
    00256 # if defined(__sparc_v9__) || defined(__sparcv9) || defined(__arch64__)
    00257         ("flushw")
    00258 # else
    00259         ("ta 0x03")
    00260 # endif /* trap always to flush register windows if we are on a Sparc system */
    00261         ;
    00262 }
    00263 #  define FLUSH_REGISTER_WINDOWS flush_register_windows()
    00264 #elif defined(__ia64)
    00265 void *rb_ia64_bsp(void);
    00266 void rb_ia64_flushrs(void);
    00267 #  define FLUSH_REGISTER_WINDOWS rb_ia64_flushrs()
    00268 #else
    00269 #  define FLUSH_REGISTER_WINDOWS ((void)0)
    00270 #endif
    00271
    00272 #if defined(DOSISH)
    00273 #define PATH_SEP ";"
    00274 #else
    00275 #define PATH_SEP ":"
    00276 #endif
    00277 #define PATH_SEP_CHAR PATH_SEP[0]
    00278
    00279 #define PATH_ENV "PATH"
    00280
    00281 #if defined(DOSISH) && !defined(__EMX__)
    00282 #define ENV_IGNORECASE
    00283 #endif
    00284
    00285 #ifndef CASEFOLD_FILESYSTEM
    00286 # if defined DOSISH
    00287 #   define CASEFOLD_FILESYSTEM 1
    00288 # else
    00289 #   define CASEFOLD_FILESYSTEM 0
    00290 # endif
    00291 #endif
    00292
    00293 #ifndef DLEXT_MAXLEN
    00294 #define DLEXT_MAXLEN 4
    00295 #endif
    00296
    00297 #ifndef RUBY_PLATFORM
    00298 #define RUBY_PLATFORM "unknown-unknown"
    00299 #endif
    00300
    00301 #ifndef RUBY_ALIAS_FUNCTION_TYPE
    00302 #define RUBY_ALIAS_FUNCTION_TYPE(type, prot, name, args) \
    00303     type prot {return name args;}
    00304 #endif
    00305 #ifndef RUBY_ALIAS_FUNCTION_VOID
    00306 #define RUBY_ALIAS_FUNCTION_VOID(prot, name, args) \
    00307     void prot {name args;}
    00308 #endif
    00309 #ifndef RUBY_ALIAS_FUNCTION
    00310 #define RUBY_ALIAS_FUNCTION(prot, name, args) \
    00311     RUBY_ALIAS_FUNCTION_TYPE(VALUE, prot, name, args)
    00312 #endif
    00313
    00314 #if defined(__cplusplus)
    00315 #if 0
    00316 { /* satisfy cc-mode */
    00317 #endif
    00318 }  /* extern "C" { */
    00319 #endif
    00320
    00321 #endif /* RUBY_DEFINES_H */
    00322