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

(892c46283a5ea4179500d951c9d4866c0051f27b)

Public APIs related to rb_mComparable. More...

#include "ruby/internal/attr/cold.h"
#include "ruby/internal/attr/noreturn.h"
#include "ruby/internal/dllexport.h"
#include "ruby/internal/value.h"
Include dependency graph for compar.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

int rb_cmpint (VALUE val, VALUE a, VALUE b)
 Canonicalises the passed val, which is the return value of a <=> b, into C's {-1, 0, 1}. More...
 
void rb_cmperr (VALUE a, VALUE b)
 Raises "comparison failed" error. More...
 

Detailed Description

Public APIs related to rb_mComparable.

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 compar.h.

Function Documentation

◆ rb_cmperr()

void rb_cmperr ( VALUE  a,
VALUE  b 
)

Raises "comparison failed" error.

Parameters
[in]aComparison LHS.
[in]bComparison RHS.
Exceptions
rb_eArgErrora and b are not comparable each other.

Definition at line 28 of file compar.c.

Referenced by rb_cmpint(), and rb_num_coerce_relop().

◆ rb_cmpint()

int rb_cmpint ( VALUE  val,
VALUE  a,
VALUE  b 
)

Canonicalises the passed val, which is the return value of a <=> b, into C's {-1, 0, 1}.

This can be handy when you implement a callback function to pass to qsort(3) etc.

Parameters
[in]valReturn value of a space ship operator.
[in]aComparison LHS.
[in]bComparison RHS.
Exceptions
rb_eArgErrora and b are not comparable each other.
Return values
-1val is less than zero.
0val is equal to zero.
1val is greater than zero.

Definition at line 2965 of file bignum.c.