Ruby 3.0.5p211 (2022-11-24 revision ba5cf0f7c52d4d35cc6a173c89eda98ceffa2dcf)
Macros | Functions
rhash.h File Reference

Routines to manipulate struct RHash. More...

#include "ruby/internal/config.h"
#include "ruby/internal/dllexport.h"
#include "ruby/internal/value.h"
#include "ruby/backward.h"

Go to the source code of this file.

Macros

#define RHASH_TBL(h)   rb_hash_tbl(h, __FILE__, __LINE__)
 
#define RHASH_ITER_LEV(h)   rb_hash_iter_lev(h)
 
#define RHASH_IFNONE(h)   rb_hash_ifnone(h)
 
#define RHASH_SIZE(h)   rb_hash_size_num(h)
 
#define RHASH_EMPTY_P(h)   (RHASH_SIZE(h) == 0)
 
#define RHASH_SET_IFNONE(h, ifnone)   rb_hash_set_ifnone((VALUE)h, ifnone)
 

Functions

size_t rb_hash_size_num (VALUE hash)
 
struct st_tablerb_hash_tbl (VALUE, const char *file, int line)
 
VALUE rb_hash_set_ifnone (VALUE hash, VALUE ifnone)
 

Detailed Description

Routines to manipulate struct RHash.

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.

Shyouhei really suffered agnish over placement of macros in this file. They are half-brken. The situation (as of wriring) is:

Shyouhei stopped thinking. Let them be as is.

Definition in file rhash.h.

Macro Definition Documentation

◆ RHASH_EMPTY_P

#define RHASH_EMPTY_P (   h)    (RHASH_SIZE(h) == 0)

Definition at line 51 of file rhash.h.

◆ RHASH_IFNONE

#define RHASH_IFNONE (   h)    rb_hash_ifnone(h)

Definition at line 49 of file rhash.h.

◆ RHASH_ITER_LEV

#define RHASH_ITER_LEV (   h)    rb_hash_iter_lev(h)

Definition at line 48 of file rhash.h.

◆ RHASH_SET_IFNONE

#define RHASH_SET_IFNONE (   h,
  ifnone 
)    rb_hash_set_ifnone((VALUE)h, ifnone)

Definition at line 52 of file rhash.h.

◆ RHASH_SIZE

#define RHASH_SIZE (   h)    rb_hash_size_num(h)

Definition at line 50 of file rhash.h.

◆ RHASH_TBL

#define RHASH_TBL (   h)    rb_hash_tbl(h, __FILE__, __LINE__)

Definition at line 47 of file rhash.h.

Function Documentation

◆ rb_hash_set_ifnone()

VALUE rb_hash_set_ifnone ( VALUE  hash,
VALUE  ifnone 
)

Definition at line 113 of file hash.c.

◆ rb_hash_size_num()

size_t rb_hash_size_num ( VALUE  hash)

Definition at line 2987 of file hash.c.

References RHASH_SIZE.

◆ rb_hash_tbl()

struct st_table * rb_hash_tbl ( VALUE  hash,
const char *  file,
int  line 
)

Definition at line 1609 of file hash.c.