Ruby  3.4.0dev (2024-12-06 revision 892c46283a5ea4179500d951c9d4866c0051f27b)
Macros | Functions
char.h File Reference

(892c46283a5ea4179500d951c9d4866c0051f27b)

Arithmetic conversion between C's char and Ruby's. More...

#include "ruby/internal/arithmetic/int.h"
#include "ruby/internal/arithmetic/long.h"
#include "ruby/internal/attr/artificial.h"
#include "ruby/internal/attr/const.h"
#include "ruby/internal/attr/constexpr.h"
#include "ruby/internal/cast.h"
#include "ruby/internal/core/rstring.h"
#include "ruby/internal/value_type.h"
Include dependency graph for char.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define RB_NUM2CHR   rb_num2char_inline
 Just another name of rb_num2char_inline. More...
 
#define NUM2CHR   RB_NUM2CHR
 Old name of RB_NUM2CHR. More...
 
#define CHR2FIX   RB_CHR2FIX
 Old name of RB_CHR2FIX. More...
 

Functions

static VALUE RB_CHR2FIX (unsigned char c)
 Converts a C's unsigned char into an instance of rb_cInteger. More...
 
static char rb_num2char_inline (VALUE x)
 Converts an instance of rb_cNumeric into C's char. More...
 

Detailed Description

Arithmetic conversion between C's char and Ruby's.

Author
Ruby developers ruby-.nosp@m.core.nosp@m.@ruby.nosp@m.-lan.nosp@m.g.org
Warning
Symbols prefixed with either RBIMPL or rbimpl are implementation details. Don't take them as canon. They could rapidly appear then vanish. The name (path) of this header file is also an implementation detail. Do not expect it to persist at the place it is now. Developers are free to move it anywhere anytime at will.
Note
To ruby-core: remember that this header can be possibly recursively included from extension libraries written in C++. Do not expect for instance __VA_ARGS__ is always available. We assume C99 for ruby itself but we don't assume languages of extension libraries. They could be written in C++98.

Definition in file char.h.

Macro Definition Documentation

◆ RB_NUM2CHR

#define RB_NUM2CHR   rb_num2char_inline

Just another name of rb_num2char_inline.

Definition at line 32 of file char.h.

Function Documentation

◆ RB_CHR2FIX()

static VALUE RB_CHR2FIX ( unsigned char  c)
inlinestatic

Converts a C's unsigned char into an instance of rb_cInteger.

Parameters
[in]cArbitrary unsigned char value.
Returns
An instance of rb_cInteger.

Definition at line 56 of file char.h.

◆ rb_num2char_inline()

static char rb_num2char_inline ( VALUE  x)
inlinestatic

Converts an instance of rb_cNumeric into C's char.

At the same time it accepts a String of more than one character, and returns its first byte. In the early days there was a Ruby level "character" literal ?c, which roughly worked this way.

Parameters
[in]xEither a string or a numeric.
Exceptions
rb_eTypeErrorx is not a numeric.
rb_eRangeErrorx is out of range of unsigned int.
Returns
The passed value converted into C's char.

Definition at line 73 of file char.h.