Ruby 3.1.3p185 (2022-11-24 revision 1a6b16756e0ba6b95ab71a441357ed5484e33498)
long_long.h
Go to the documentation of this file.
1#ifndef RBIMPL_ARITHMETIC_LONG_LONG_H /*-*-C++-*-vi:se ft=cpp:*/
2#define RBIMPL_ARITHMETIC_LONG_LONG_H
23#include "ruby/internal/value.h"
27
28#define RB_LL2NUM rb_ll2num_inline
29#define RB_ULL2NUM rb_ull2num_inline
30#define LL2NUM RB_LL2NUM
31#define ULL2NUM RB_ULL2NUM
32#define RB_NUM2LL rb_num2ll_inline
33#define RB_NUM2ULL rb_num2ull_inline
34#define NUM2LL RB_NUM2LL
35#define NUM2ULL RB_NUM2ULL
45
52VALUE rb_ull2inum(unsigned LONG_LONG num);
53
63
72unsigned LONG_LONG rb_num2ull(VALUE num);
74
81static inline VALUE
83{
84 if (FIXABLE(n)) return LONG2FIX((long)n);
85 return rb_ll2inum(n);
86}
87
94static inline VALUE
96{
97 if (POSFIXABLE(n)) return LONG2FIX((long)n);
98 return rb_ull2inum(n);
99}
100
109static inline LONG_LONG
111{
112 if (RB_FIXNUM_P(x))
113 return RB_FIX2LONG(x);
114 else
115 return rb_num2ll(x);
116}
117
126static inline unsigned LONG_LONG
128{
129 if (RB_FIXNUM_P(x))
130 return RB_FIX2LONG(x);
131 else
132 return rb_num2ull(x);
133}
134
135#endif /* RBIMPL_ARITHMETIC_LONG_LONG_H */
Defines old LONG_LONG.
#define LONG_LONG
Definition: long_long.h:38
Tweaking visibility of C variables/functions.
#define RBIMPL_SYMBOL_EXPORT_END()
Counterpart of RBIMPL_SYMBOL_EXPORT_BEGIN.
Definition: dllexport.h:106
#define RBIMPL_SYMBOL_EXPORT_BEGIN()
Shortcut macro equivalent to RUBY_SYMBOL_EXPORT_BEGIN extern "C" {.
Definition: dllexport.h:97
#define FIXABLE
Old name of RB_FIXABLE.
Definition: fixnum.h:25
#define LONG2FIX
Old name of RB_INT2FIX.
Definition: long.h:49
#define POSFIXABLE
Old name of RB_POSFIXABLE.
Definition: fixnum.h:29
LONG_LONG rb_num2ll(VALUE num)
Converts an instance of rb_cNumeric into C's long long.
unsigned LONG_LONG rb_num2ull(VALUE num)
Converts an instance of rb_cNumeric into C's unsigned long long.
static VALUE rb_ull2num_inline(unsigned LONG_LONG n)
Converts a C's unsigned long long into an instance of rb_cInteger.
Definition: long_long.h:95
VALUE rb_ull2inum(unsigned LONG_LONG num)
Converts a C's unsigned long long into an instance of rb_cInteger.
static VALUE rb_ll2num_inline(LONG_LONG n)
Converts a C's long long into an instance of rb_cInteger.
Definition: long_long.h:82
VALUE rb_ll2inum(LONG_LONG num)
Converts a C's long long into an instance of rb_cInteger.
static LONG_LONG rb_num2ll_inline(VALUE x)
Converts an instance of rb_cNumeric into C's long long.
Definition: long_long.h:110
static unsigned LONG_LONG rb_num2ull_inline(VALUE x)
Converts an instance of rb_cNumeric into C's unsigned long long.
Definition: long_long.h:127
#define RB_FIX2LONG
Just another name of rb_fix2long.
Definition: long.h:53
Defines enum ruby_special_consts.
static bool RB_FIXNUM_P(VALUE obj)
Checks if the given object is a so-called Fixnum.
Defines VALUE and ID.