Ruby: ruby::backward::cxxanyargs Namespace Reference

Ruby 3.4.8p72 (2025-12-17 revision 995b59f66677d44767ce9faac6957e5543617ff9)

Namespaces | Typedefs
ruby::backward::cxxanyargs Namespace Reference

Provides ANYARGS deprecation warnings. More...

## Namespaces
namespace | define_method
| Driver for *_define_method.

## Typedefs
typedef VALUE | type(ANYARGS)
| ANYARGS-ed function type.
typedef void | void_type(ANYARGS)
| ANYARGS-ed function type, void variant.
typedef int | int_type(ANYARGS)
| ANYARGS-ed function type, int variant.
typedef VALUE | onearg_type(VALUE)
| Single-argumented function type.

## Functions
Hooking global variables
void | rb_define_virtual_variable (const char *q, type *w, void_type *e)
| Define a function-backended global variable.
void | rb_define_hooked_variable (const char *q, VALUE *w, type *e, void_type *r)
| Define a function-backended global variable.
Exceptions and tag jumps
VALUE | rb_iterate (onearg_type *q, VALUE w, type *e, VALUE r)
| Old way to implement iterators.
VALUE | rb_block_call (VALUE q, ID w, int e, const VALUE *r, type *t, VALUE y)
| Call a method with a block.
VALUE | rb_rescue (type *q, VALUE w, type *e, VALUE r)
| An equivalent of `rescue` clause.
VALUE | rb_rescue2 (type *q, VALUE w, type *e, VALUE r,...)
| An equivalent of `rescue` clause.
VALUE | rb_ensure (type *q, VALUE w, type *e, VALUE r)
| An equivalent of `ensure` clause.
VALUE | rb_catch (const char *q, type *w, VALUE e)
| An equivalent of `Kernel#catch`.
VALUE | rb_catch_obj (VALUE q, type *w, VALUE e)
| An equivalent of `Kernel#catch`.
Procs, Fibers and Threads
VALUE | rb_fiber_new (type *q, VALUE w)
| Creates a rb_cFiber instance.
VALUE | rb_proc_new (type *q, VALUE w)
| Creates a rb_cProc instance.
VALUE | rb_thread_create (type *q, void *w)
| Creates a rb_cThread instance.
Hash and st_table
int | st_foreach (st_table *q, int_type *w, st_data_t e)
| Iteration over the given table.
int | st_foreach_check (st_table *q, int_type *w, st_data_t e, st_data_t)
| Iteration over the given table.
void | st_foreach_safe (st_table *q, int_type *w, st_data_t e)
| Iteration over the given table.
void | rb_hash_foreach (VALUE q, int_type *w, VALUE e)
| Iteration over the given hash.
void | rb_ivar_foreach (VALUE q, int_type *w, VALUE e)
| Iteration over each instance variable of the object.

## Detailed Description

Provides ANYARGS deprecation warnings.

In C, ANYARGS means there is no function prototype. Literally anything, even including nothing, can be a valid ANYARGS. So passing a correctly prototyped function pointer to an ANYARGS-ed function parameter is valid, at the same time passing an ANYARGS-ed function pointer to a granular typed function parameter is also valid. However on the other hand in C++, ANYARGS doesn't actually mean any number of arguments. C++'s ANYARGS means variadic number of arguments. This is incompatible with ordinal, correct function prototypes.

Luckily, function prototypes being distinct each other means they can be overloaded. We can provide a compatibility layer for older Ruby APIs which used to have ANYARGS. This namespace includes such attempts.

## Typedef Documentation

## ◆ int_type

typedef int ruby::backward::cxxanyargs::int_type(ANYARGS)

ANYARGS-ed function type, int variant.

Definition at line 58 of file cxxanyargs.hpp.

## ◆ onearg_type

typedef VALUE ruby::backward::cxxanyargs::onearg_type(VALUE)

Single-argumented function type.

Definition at line 59 of file cxxanyargs.hpp.

## ◆ type

typedef VALUE ruby::backward::cxxanyargs::type(ANYARGS)

ANYARGS-ed function type.

Definition at line 56 of file cxxanyargs.hpp.

## ◆ void_type

typedef void ruby::backward::cxxanyargs::void_type(ANYARGS)

ANYARGS-ed function type, void variant.

Definition at line 57 of file cxxanyargs.hpp.

## Function Documentation

## ◆ rb_block_call()

VALUE ruby::backward::cxxanyargs::rb_block_call | ( | VALUE | q,
|  | ID | w,
|  | int | e,
|  | const VALUE * | r,
|  | type * | t,
|  | VALUE | y
| ) |  |
| inline

Call a method with a block.

Parameters

  [in] | q | The self.
  [in] | w | The method.
  [in] | e | The # of elems of `r`
  [in] | r | The arguments.
  [in] | t | What is to be yielded.
  [in] | y | Passed to `t`

Returns
  Return value of `q#w(*r,&t)`

Note
  't' can be nullptr.

Deprecated:
  Use granular typed overload instead.

Definition at line 232 of file cxxanyargs.hpp.

Referenced by rb_block_call(), and rb_proc_new().

## ◆ rb_catch()

VALUE ruby::backward::cxxanyargs::rb_catch | ( | const char * | q,
|  | type * | w,
|  | VALUE | e
| ) |  |
| inline

An equivalent of `Kernel#catch`.

Parameters

  [in] | q | The "tag" string.
  [in] | w | A function that can throw.
  [in] | e | Passed to `w`.

Returns
  What was thrown.

Note
  `q` can be a nullptr but makes no sense to pass nullptr to`w`.

See also
  rb_block_call()
  rb_protect()
  rb_rb_catch_obj()
  rb_rescue()

Deprecated:
  Use granular typed overload instead.

Definition at line 331 of file cxxanyargs.hpp.

## ◆ rb_catch_obj()

VALUE ruby::backward::cxxanyargs::rb_catch_obj | ( | VALUE | q,
|  | type * | w,
|  | VALUE | e
| ) |  |
| inline

An equivalent of `Kernel#catch`.

Parameters

  [in] | q | The "tag" object.
  [in] | w | A function that can throw.
  [in] | e | Passed to `w`.

Returns
  What was thrown.

Note
  It makes no sense to pass nullptr to`w`.

See also
  rb_block_call()
  rb_protect()
  rb_rb_catch_obj()
  rb_rescue()

Deprecated:
  Use granular typed overload instead.

Definition at line 358 of file cxxanyargs.hpp.

Referenced by rb_catch().

## ◆ rb_define_hooked_variable()

void ruby::backward::cxxanyargs::rb_define_hooked_variable | ( | const char * | q,
|  | VALUE * | w,
|  | type * | e,
|  | void_type * | r
| ) |  |
| inline

Define a function-backended global variable.

Parameters

  [in] | q | Name of the variable.
  [in] | w | Variable storage.
  [in] | e | Getter function.
  [in] | r | Setter function.

Note
  Both functions can be nullptr.

See also
  rb_define_virtual_variable()

Deprecated:
  Use granular typed overload instead.

Definition at line 136 of file cxxanyargs.hpp.

Referenced by rb_define_hooked_variable(), rb_define_hooked_variable(), rb_define_readonly_variable(), rb_define_variable(), rb_define_virtual_variable(), and ruby_prog_init().

## ◆ rb_define_virtual_variable()

void ruby::backward::cxxanyargs::rb_define_virtual_variable | ( | const char * | q,
|  | type * | w,
|  | void_type * | e
| ) |  |
| inline

Define a function-backended global variable.

Parameters

  [in] | q | Name of the variable.
  [in] | w | Getter function.
  [in] | e | Setter function.

Note
  Both functions can be nullptr.

See also
  rb_define_hooked_variable()

Deprecated:
  Use granular typed overload instead.

Definition at line 73 of file cxxanyargs.hpp.

Referenced by rb_define_virtual_variable(), rb_define_virtual_variable(), and ruby_prog_init().

## ◆ rb_ensure()

VALUE ruby::backward::cxxanyargs::rb_ensure | ( | type * | q,
|  | VALUE | w,
|  | type * | e,
|  | VALUE | r
| ) |  |
| inline

An equivalent of `ensure` clause.

Parameters

  [in] | q | A function that can raise.
  [in] | w | Passed to `q`.
  [in] | e | A function that ensures.
  [in] | r | Passed to `e`.

Returns
  The return value of `q`.

Note
  It makes no sense to pass nullptr to `e`.

See also
  rb_rescue()
  rb_rescue2()
  rb_protect()

Deprecated:
  Use granular typed overload instead.

Definition at line 310 of file cxxanyargs.hpp.

## ◆ rb_fiber_new()

VALUE ruby::backward::cxxanyargs::rb_fiber_new | ( | type * | q,
|  | VALUE | w
| ) |  |
| inline

Creates a rb_cFiber instance.

Parameters

  [in] | q | The fiber body.
  [in] | w | Passed to `q`.

Returns
  What was allocated.

Note
  It makes no sense to pass nullptr to`q`.

See also
  rb_proc_new()
  rb_thread_create()

Deprecated:
  Use granular typed overload instead.

Definition at line 378 of file cxxanyargs.hpp.

## ◆ rb_hash_foreach()

void ruby::backward::cxxanyargs::rb_hash_foreach | ( | VALUE | q,
|  | int_type * | w,
|  | VALUE | e
| ) |  |
| inline

Iteration over the given hash.

Parameters

  [in] | q | A hash to scan.
  [in] | w | A function to iterate.
  [in] | e | Passed to `w`.

Note
  It makes no sense to pass nullptr to`w`.

See also
  st_foreach()

Deprecated:
  Use granular typed overload instead.

Definition at line 482 of file cxxanyargs.hpp.

Referenced by rb_hash_foreach().

## ◆ rb_iterate()

VALUE ruby::backward::cxxanyargs::rb_iterate | ( | onearg_type * | q,
|  | VALUE | w,
|  | type * | e,
|  | VALUE | r
| ) |  |
| inline

Old way to implement iterators.

Parameters

  [in] | q | A function that can yield.
  [in] | w | Passed to `q`.
  [in] | e | What is to be yielded.
  [in] | r | Passed to `e`.

Returns
  The return value of `q`.

Note
  `e` can be nullptr.

Deprecated:
  This function is obsoleted since long before 2.x era. Do not use it any longer. rb_block_call() is provided instead.

Definition at line 205 of file cxxanyargs.hpp.

## ◆ rb_ivar_foreach()

void ruby::backward::cxxanyargs::rb_ivar_foreach | ( | VALUE | q,
|  | int_type * | w,
|  | VALUE | e
| ) |  |
| inline

Iteration over each instance variable of the object.

Parameters

  [in] | q | An object.
  [in] | w | A function to iterate.
  [in] | e | Passed to `w`.

Note
  It makes no sense to pass nullptr to`w`.

See also
  st_foreach()

Deprecated:
  Use granular typed overload instead.

Definition at line 498 of file cxxanyargs.hpp.

Referenced by rb_ivar_foreach(), and rb_obj_instance_variables().

## ◆ rb_proc_new()

VALUE ruby::backward::cxxanyargs::rb_proc_new | ( | type * | q,
|  | VALUE | w
| ) |  |
| inline

Creates a rb_cProc instance.

Parameters

  [in] | q | The proc body.
  [in] | w | Passed to `q`.

Returns
  What was allocated.

Note
  It makes no sense to pass nullptr to`q`.

See also
  rb_fiber_new()
  rb_thread_create()

Deprecated:
  Use granular typed overload instead.

Definition at line 394 of file cxxanyargs.hpp.

Referenced by rb_fiber_new_storage(), rb_fiber_scheduler_blocking_operation_wait(), and rb_proc_new().

## ◆ rb_rescue()

VALUE ruby::backward::cxxanyargs::rb_rescue | ( | type * | q,
|  | VALUE | w,
|  | type * | e,
|  | VALUE | r
| ) |  |
| inline

An equivalent of `rescue` clause.

Parameters

  [in] | q | A function that can raise.
  [in] | w | Passed to `q`.
  [in] | e | A function that cleans-up.
  [in] | r | Passed to `e`.

Returns
  The return value of `q` if no exception occurs, or the return value of `e` if otherwise.

Note
  `e` can be nullptr.

See also
  rb_ensure()
  rb_rescue2()
  rb_protect()

Deprecated:
  Use granular typed overload instead.

Definition at line 260 of file cxxanyargs.hpp.

## ◆ rb_rescue2()

VALUE ruby::backward::cxxanyargs::rb_rescue2 | ( | type * | q,
|  | VALUE | w,
|  | type * | e,
|  | VALUE | r,
|  |  | ...
| ) |  |
| inline

An equivalent of `rescue` clause.

Parameters

  [in] | q | A function that can raise.
  [in] | w | Passed to `q`.
  [in] | e | A function that cleans-up.
  [in] | r | Passed to `e`.
  [in] | ... | 0-terminated list of subclass of rb_eException.

Returns
  The return value of `q` if no exception occurs, or the return value of `e` if otherwise.

Note
  `e` can be nullptr.

See also
  rb_ensure()
  rb_rescue()
  rb_protect()

Deprecated:
  Use granular typed overload instead.

Definition at line 284 of file cxxanyargs.hpp.

## ◆ rb_thread_create()

VALUE ruby::backward::cxxanyargs::rb_thread_create | ( | type * | q,
|  | void * | w
| ) |  |
| inline

Creates a rb_cThread instance.

Parameters

  [in] | q | The thread body.
  [in] | w | Passed to `q`.

Returns
  What was allocated.

Note
  It makes no sense to pass nullptr to`q`.

See also
  rb_proc_new()
  rb_fiber_new()

Deprecated:
  Use granular typed overload instead.

Definition at line 410 of file cxxanyargs.hpp.

Referenced by rb_detach_process().

## ◆ st_foreach()

int ruby::backward::cxxanyargs::st_foreach | ( | st_table * | q,
|  | int_type * | w,
|  | st_data_t | e
| ) |  |
| inline

Iteration over the given table.

Parameters

  [in] | q | A table to scan.
  [in] | w | A function to iterate.
  [in] | e | Passed to `w`.

Return values

  0 | Always returns 0.

Note
  It makes no sense to pass nullptr to`w`.

See also
  st_foreach_check()
  rb_hash_foreach()

Deprecated:
  Use granular typed overload instead.

Definition at line 432 of file cxxanyargs.hpp.

## ◆ st_foreach_check()

int ruby::backward::cxxanyargs::st_foreach_check | ( | st_table * | q,
|  | int_type * | w,
|  | st_data_t | e,
|  | st_data_t |
| ) |  |
| inline

Iteration over the given table.

Parameters

  [in] | q | A table to scan.
  [in] | w | A function to iterate.
  [in] | e | Passed to `w`.

Return values

  0 | Successful end of iteration.
  1 | Element removed during traversing.

Note
  It makes no sense to pass nullptr to`w`.

See also
  st_foreach()

Deprecated:
  Use granular typed overload instead.

Definition at line 450 of file cxxanyargs.hpp.

## ◆ st_foreach_safe()

void ruby::backward::cxxanyargs::st_foreach_safe | ( | st_table * | q,
|  | int_type * | w,
|  | st_data_t | e
| ) |  |
| inline

Iteration over the given table.

Parameters

  [in] | q | A table to scan.
  [in] | w | A function to iterate.
  [in] | e | Passed to `w`.

Note
  It makes no sense to pass nullptr to`w`.

See also
  st_foreach_check()

Deprecated:
  Use granular typed overload instead.

Definition at line 466 of file cxxanyargs.hpp.