18#define RHASH_AR_TABLE_MAX_SIZE SIZEOF_VALUE
37#define RHASH_LEV_MASK (FL_USER13 | FL_USER14 | FL_USER15 | \
38 FL_USER16 | FL_USER17 | FL_USER18 | FL_USER19)
57#define RHASH(obj) ((struct RHash *)(obj))
88static inline unsigned RHASH_AR_TABLE_SIZE_RAW(
VALUE h);
92static inline bool RHASH_AR_TABLE_P(
VALUE h);
93static inline bool RHASH_ST_TABLE_P(
VALUE h);
96static inline size_t RHASH_ST_SIZE(
VALUE h);
97static inline void RHASH_ST_CLEAR(
VALUE h);
98static inline bool RHASH_TRANSIENT_P(
VALUE h);
99static inline void RHASH_SET_TRANSIENT_FLAG(
VALUE h);
100static inline void RHASH_UNSET_TRANSIENT_FLAG(
VALUE h);
102RUBY_SYMBOL_EXPORT_BEGIN
107RUBY_SYMBOL_EXPORT_END
118#define RHASH_TBL_RAW(h) rb_hash_tbl_raw(h, __FILE__, __LINE__)
124RHASH_AR_TABLE_P(
VALUE h)
131RHASH_AR_TABLE(
VALUE h)
138RHASH_ST_TABLE(
VALUE h)
146RHASH_AR_TABLE_P(
VALUE h)
152RHASH_AR_TABLE(
VALUE h)
154 return RHASH(h)->as.ar;
158RHASH_ST_TABLE(
VALUE h)
160 return RHASH(h)->as.st;
168 return RHASH(h)->ifnone;
174 if (RHASH_AR_TABLE_P(h)) {
175 return RHASH_AR_TABLE_SIZE_RAW(h);
178 return RHASH_ST_SIZE(h);
189RHASH_ST_TABLE_P(
VALUE h)
191 return ! RHASH_AR_TABLE_P(h);
195RHASH_ST_SIZE(
VALUE h)
201RHASH_ST_CLEAR(
VALUE h)
207static inline unsigned
208RHASH_AR_TABLE_SIZE_RAW(
VALUE h)
212 return (
unsigned)ret;
216RHASH_TRANSIENT_P(
VALUE h)
218#if USE_TRANSIENT_HEAP
226RHASH_SET_TRANSIENT_FLAG(
VALUE h)
228#if USE_TRANSIENT_HEAP
234RHASH_UNSET_TRANSIENT_FLAG(
VALUE h)
236#if USE_TRANSIENT_HEAP
#define MJIT_SYMBOL_EXPORT_END
#define MJIT_SYMBOL_EXPORT_BEGIN
VALUE rb_ident_hash_new(void)
int rb_hash_ar_table_p(VALUE hash)
ar_table * rb_hash_ar_table(VALUE hash)
Thin wrapper to ruby/config.h.
VALUE rb_hash_default_value(VALUE hash, VALUE key)
int rb_hash_stlike_foreach_with_replace(VALUE hash, st_foreach_check_callback_func *func, st_update_callback_func *replace, st_data_t arg)
VALUE rb_hash_values(VALUE hash)
VALUE rb_hash_resurrect(VALUE hash)
void rb_hash_st_table_set(VALUE hash, st_table *st)
int rb_hash_add_new_element(VALUE hash, VALUE key, VALUE val)
int rb_hash_stlike_delete(VALUE hash, st_data_t *pkey, st_data_t *pval)
VALUE rb_hash_set_pair(VALUE hash, VALUE pair)
VALUE rb_hash_rehash(VALUE hash)
VALUE rb_hash_has_key(VALUE hash, VALUE key)
VALUE rb_hash_key_str(VALUE)
VALUE rb_hash_new_with_size(st_index_t size)
VALUE rb_to_hash_type(VALUE obj)
VALUE rb_hash_compare_by_id_p(VALUE hash)
#define RHASH_AR_TABLE_MAX_SIZE
VALUE rb_hash_set_default_proc(VALUE hash, VALUE proc)
VALUE rb_hash_keys(VALUE hash)
st_table * rb_hash_st_table(VALUE hash)
int rb_hash_stlike_foreach(VALUE hash, st_foreach_callback_func *func, st_data_t arg)
VALUE rb_hash_delete_entry(VALUE hash, VALUE key)
@ RHASH_AR_TABLE_BOUND_SHIFT
@ RHASH_AR_TABLE_BOUND_MASK
@ RHASH_AR_TABLE_SIZE_MASK
@ RHASH_AR_TABLE_SIZE_SHIFT
long rb_dbl_long_hash(double d)
int rb_hash_stlike_update(VALUE hash, st_data_t key, st_update_callback_func *func, st_data_t arg)
st_table * rb_hash_tbl_raw(VALUE hash, const char *file, int line)
int rb_hash_stlike_lookup(VALUE hash, st_data_t key, st_data_t *pval)
st_table * rb_init_identtable(void)
int st_foreach_check_callback_func(st_data_t, st_data_t, st_data_t, int)
int st_update_callback_func(st_data_t *key, st_data_t *value, st_data_t arg, int existing)
int st_foreach_callback_func(st_data_t, st_data_t, st_data_t)
struct ar_table_struct * ar
union RHash::@111 ar_hint