• 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 

Generated on Wed Sep 8 2010 09:55:48 for Ruby by  doxygen 1.7.1