16 VALUE h = rb_hash_new();
21#define ULLONG_MAX ((unsigned LONG_LONG)LLONG_MAX*2+1)
23#define MAX2NUM(name) ULL2NUM(name ## _MAX)
24#define MIN2NUM(name) LL2NUM(name ## _MIN)
26#define MAX2NUM(name) ULONG2NUM(name ## _MAX)
27#define MIN2NUM(name) LONG2NUM(name ## _MIN)
29#define DEFINE(k, v) rb_hash_aset(h, rb_str_new_cstr(#k), v)
38 DEFINE(CHAR_MAX, MAX2NUM(CHAR));
41 DEFINE(CHAR_MIN, MIN2NUM(CHAR));
44 DEFINE(SCHAR_MAX, MAX2NUM(SCHAR));
47 DEFINE(SCHAR_MIN, MIN2NUM(SCHAR));
50 DEFINE(UCHAR_MAX, MAX2NUM(UCHAR));
53 DEFINE(UCHAR_MIN, MIN2NUM(UCHAR));
56 DEFINE(WCHAR_MAX, MAX2NUM(WCHAR));
59 DEFINE(WCHAR_MIN, MIN2NUM(WCHAR));
62 DEFINE(SHRT_MAX, MAX2NUM(SHRT));
65 DEFINE(SHRT_MIN, MIN2NUM(SHRT));
68 DEFINE(USHRT_MAX, MAX2NUM(USHRT));
71 DEFINE(USHRT_MIN, MIN2NUM(USHRT));
74 DEFINE(INT_MAX, MAX2NUM(INT));
77 DEFINE(INT_MIN, MIN2NUM(INT));
80 DEFINE(UINT_MAX, MAX2NUM(UINT));
83 DEFINE(UINT_MIN, MIN2NUM(UINT));
86 DEFINE(LONG_MAX, MAX2NUM(LONG));
89 DEFINE(LONG_MIN, MIN2NUM(LONG));
92 DEFINE(ULONG_MAX, MAX2NUM(ULONG));
95 DEFINE(ULONG_MIN, MIN2NUM(ULONG));
98 DEFINE(LLONG_MAX, MAX2NUM(LLONG));
101 DEFINE(LLONG_MIN, MIN2NUM(LLONG));
104 DEFINE(ULLONG_MAX, MAX2NUM(ULLONG));
107 DEFINE(ULLONG_MIN, MIN2NUM(ULLONG));
110 DEFINE(INT8_MAX, MAX2NUM(INT8));
113 DEFINE(INT8_MIN, MIN2NUM(INT8));
116 DEFINE(UINT8_MAX, MAX2NUM(UINT8));
119 DEFINE(UINT8_MIN, MIN2NUM(UINT8));
122 DEFINE(INT_LEAST8_MAX, MAX2NUM(INT_LEAST8));
125 DEFINE(INT_LEAST8_MIN, MIN2NUM(INT_LEAST8));
127#ifdef UINT_LEAST8_MAX
128 DEFINE(UINT_LEAST8_MAX, MAX2NUM(UINT_LEAST8));
130#ifdef UINT_LEAST8_MIN
131 DEFINE(UINT_LEAST8_MIN, MIN2NUM(UINT_LEAST8));
134 DEFINE(INT_FAST8_MAX, MAX2NUM(INT_FAST8));
137 DEFINE(INT_FAST8_MIN, MIN2NUM(INT_FAST8));
140 DEFINE(UINT_FAST8_MAX, MAX2NUM(UINT_FAST8));
143 DEFINE(UINT_FAST8_MIN, MIN2NUM(UINT_FAST8));
146 DEFINE(INT16_MAX, MAX2NUM(INT16));
149 DEFINE(INT16_MIN, MIN2NUM(INT16));
152 DEFINE(UINT16_MAX, MAX2NUM(UINT16));
155 DEFINE(UINT16_MIN, MIN2NUM(UINT16));
157#ifdef INT_LEAST16_MAX
158 DEFINE(INT_LEAST16_MAX, MAX2NUM(INT_LEAST16));
160#ifdef INT_LEAST16_MIN
161 DEFINE(INT_LEAST16_MIN, MIN2NUM(INT_LEAST16));
163#ifdef UINT_LEAST16_MAX
164 DEFINE(UINT_LEAST16_MAX, MAX2NUM(UINT_LEAST16));
166#ifdef UINT_LEAST16_MIN
167 DEFINE(UINT_LEAST16_MIN, MIN2NUM(UINT_LEAST16));
170 DEFINE(INT_FAST16_MAX, MAX2NUM(INT_FAST16));
173 DEFINE(INT_FAST16_MIN, MIN2NUM(INT_FAST16));
175#ifdef UINT_FAST16_MAX
176 DEFINE(UINT_FAST16_MAX, MAX2NUM(UINT_FAST16));
178#ifdef UINT_FAST16_MIN
179 DEFINE(UINT_FAST16_MIN, MIN2NUM(UINT_FAST16));
182 DEFINE(INT32_MAX, MAX2NUM(INT32));
185 DEFINE(INT32_MIN, MIN2NUM(INT32));
188 DEFINE(UINT32_MAX, MAX2NUM(UINT32));
191 DEFINE(UINT32_MIN, MIN2NUM(UINT32));
193#ifdef INT_LEAST32_MAX
194 DEFINE(INT_LEAST32_MAX, MAX2NUM(INT_LEAST32));
196#ifdef INT_LEAST32_MIN
197 DEFINE(INT_LEAST32_MIN, MIN2NUM(INT_LEAST32));
199#ifdef UINT_LEAST32_MAX
200 DEFINE(UINT_LEAST32_MAX, MAX2NUM(UINT_LEAST32));
202#ifdef UINT_LEAST32_MIN
203 DEFINE(UINT_LEAST32_MIN, MIN2NUM(UINT_LEAST32));
206 DEFINE(INT_FAST32_MAX, MAX2NUM(INT_FAST32));
209 DEFINE(INT_FAST32_MIN, MIN2NUM(INT_FAST32));
211#ifdef UINT_FAST32_MAX
212 DEFINE(UINT_FAST32_MAX, MAX2NUM(UINT_FAST32));
214#ifdef UINT_FAST32_MIN
215 DEFINE(UINT_FAST32_MIN, MIN2NUM(UINT_FAST32));
218 DEFINE(INT64_MAX, MAX2NUM(INT64));
221 DEFINE(INT64_MIN, MIN2NUM(INT64));
224 DEFINE(UINT64_MAX, MAX2NUM(UINT64));
227 DEFINE(UINT64_MIN, MIN2NUM(UINT64));
229#ifdef INT_LEAST64_MAX
230 DEFINE(INT_LEAST64_MAX, MAX2NUM(INT_LEAST64));
232#ifdef INT_LEAST64_MIN
233 DEFINE(INT_LEAST64_MIN, MIN2NUM(INT_LEAST64));
235#ifdef UINT_LEAST64_MAX
236 DEFINE(UINT_LEAST64_MAX, MAX2NUM(UINT_LEAST64));
238#ifdef UINT_LEAST64_MIN
239 DEFINE(UINT_LEAST64_MIN, MIN2NUM(UINT_LEAST64));
242 DEFINE(INT_FAST64_MAX, MAX2NUM(INT_FAST64));
245 DEFINE(INT_FAST64_MIN, MIN2NUM(INT_FAST64));
247#ifdef UINT_FAST64_MAX
248 DEFINE(UINT_FAST64_MAX, MAX2NUM(UINT_FAST64));
250#ifdef UINT_FAST64_MIN
251 DEFINE(UINT_FAST64_MIN, MIN2NUM(UINT_FAST64));
254 DEFINE(INT128_MAX, MAX2NUM(INT128));
257 DEFINE(INT128_MIN, MIN2NUM(INT128));
260 DEFINE(UINT128_MAX, MAX2NUM(UINT128));
263 DEFINE(UINT128_MIN, MIN2NUM(UINT128));
266 DEFINE(INTMAX_MAX, MAX2NUM(INTMAX));
269 DEFINE(INTMAX_MIN, MIN2NUM(INTMAX));
272 DEFINE(UINTMAX_MAX, MAX2NUM(UINTMAX));
275 DEFINE(UINTMAX_MIN, MIN2NUM(UINTMAX));
278 DEFINE(INTPTR_MAX, MAX2NUM(INTPTR));
281 DEFINE(INTPTR_MIN, MIN2NUM(INTPTR));
284 DEFINE(UINTPTR_MAX, MAX2NUM(UINTPTR));
287 DEFINE(UINTPTR_MIN, MIN2NUM(UINTPTR));
290 DEFINE(SSZIE_MAX, MAX2NUM(SSZIE));
293 DEFINE(SSZIE_MIN, MIN2NUM(SSZIE));
296 DEFINE(SIZE_MAX, MAX2NUM(SIZE));
299 DEFINE(SIZE_MIN, MIN2NUM(SIZE));
302 DEFINE(PTRDIFF_MAX, MAX2NUM(PTRDIFF));
305 DEFINE(PTRDIFF_MIN, MIN2NUM(PTRDIFF));
309 DEFINE(FLT_RADIX,
LONG2NUM(FLT_RADIX));
312 DEFINE(FLT_ROUNDS,
LONG2NUM(FLT_ROUNDS));
314#ifdef FLT_EVAL_METHOD
315 DEFINE(FLT_EVAL_METHOD,
LONG2NUM(FLT_EVAL_METHOD));
318 DEFINE(FLT_MANT_DIG,
LONG2NUM(FLT_MANT_DIG));
321 DEFINE(DBL_MANT_DIG,
LONG2NUM(DBL_MANT_DIG));
324 DEFINE(LDBL_MANT_DIG,
LONG2NUM(LDBL_MANT_DIG));
333 DEFINE(LDBL_DIG,
LONG2NUM(LDBL_DIG));
336 DEFINE(FLT_MIN_EXP,
LONG2NUM(FLT_MIN_EXP));
339 DEFINE(DBL_MIN_EXP,
LONG2NUM(DBL_MIN_EXP));
342 DEFINE(LDBL_MIN_EXP,
LONG2NUM(LDBL_MIN_EXP));
345 DEFINE(FLT_MIN_10_EXP,
LONG2NUM(FLT_MIN_10_EXP));
348 DEFINE(DBL_MIN_10_EXP,
LONG2NUM(DBL_MIN_10_EXP));
350#ifdef LDBL_MIN_10_EXP
351 DEFINE(LDBL_MIN_10_EXP,
LONG2NUM(LDBL_MIN_10_EXP));
354 DEFINE(FLT_MAX_EXP,
LONG2NUM(FLT_MAX_EXP));
357 DEFINE(DBL_MAX_EXP,
LONG2NUM(DBL_MAX_EXP));
360 DEFINE(LDBL_MAX_EXP,
LONG2NUM(LDBL_MAX_EXP));
363 DEFINE(FLT_MAX_10_EXP,
LONG2NUM(FLT_MAX_10_EXP));
366 DEFINE(DBL_MAX_10_EXP,
LONG2NUM(DBL_MAX_10_EXP));
368#ifdef LDBL_MAX_10_EXP
369 DEFINE(LDBL_MAX_10_EXP,
LONG2NUM(LDBL_MAX_10_EXP));
371#ifdef FLT_DECIMAL_DIG
372 DEFINE(FLT_DECIMAL_DIG,
LONG2NUM(FLT_DECIMAL_DIG));
374#ifdef DBL_DECIMAL_DIG
375 DEFINE(DBL_DECIMAL_DIG,
LONG2NUM(DBL_DECIMAL_DIG));
377#ifdef LDBL_DECIMAL_DIG
378 DEFINE(LDBL_DECIMAL_DIG,
LONG2NUM(LDBL_DECIMAL_DIG));
381 DEFINE(DECIMAL_DIG,
LONG2NUM(DECIMAL_DIG));
383#ifdef FLT_HAS_SUBNORM
384 DEFINE(FLT_HAS_SUBNORM,
LONG2NUM(FLT_HAS_SUBNORM));
386#ifdef DBL_HAS_SUBNORM
387 DEFINE(DBL_HAS_SUBNORM,
LONG2NUM(DBL_HAS_SUBNORM));
389#ifdef LDBL_HAS_SUBNORM
390 DEFINE(LDBL_HAS_SUBNORM,
LONG2NUM(LDBL_HAS_SUBNORM));
394 DEFINE(FLT_MAX,
DBL2NUM(FLT_MAX));
397 DEFINE(DBL_MAX,
DBL2NUM(DBL_MAX));
400 DEFINE(FLT_EPSILON,
DBL2NUM(FLT_EPSILON));
403 DEFINE(DBL_EPSILON,
DBL2NUM(DBL_EPSILON));
406 DEFINE(FLT_MIN,
DBL2NUM(FLT_MIN));
409 DEFINE(DBL_MIN,
DBL2NUM(DBL_MIN));
412 DEFINE(FLT_TRUE_MIN,
DBL2NUM(FLT_TRUE_MIN));
415 DEFINE(DBL_TRUE_MIN,
DBL2NUM(DBL_TRUE_MIN));
VALUE rb_define_module(const char *name)
Defines a top-level module.
#define OBJ_FREEZE
Old name of RB_OBJ_FREEZE.
#define LONG2NUM
Old name of RB_LONG2NUM.
#define FIXNUM_MIN
Old name of RUBY_FIXNUM_MIN.
#define FIXNUM_MAX
Old name of RUBY_FIXNUM_MAX.
#define DBL2NUM
Old name of rb_float_new.
void rb_define_const(VALUE klass, const char *name, VALUE val)
Defines a Ruby level constant under a namespace.
uintptr_t VALUE
Type that represents a Ruby object.