mirror of
https://github.com/ruby/ruby.git
synced 2025-08-15 13:39:04 +02:00
id_table.c: reduce duplication in managed_id_table methods
This commit is contained in:
parent
562599e6bc
commit
6fd108dd6b
1 changed files with 8 additions and 20 deletions
28
id_table.c
28
id_table.c
|
@ -358,6 +358,9 @@ static const rb_data_type_t managed_id_table_type = {
|
||||||
static inline struct rb_id_table *
|
static inline struct rb_id_table *
|
||||||
managed_id_table_ptr(VALUE obj)
|
managed_id_table_ptr(VALUE obj)
|
||||||
{
|
{
|
||||||
|
RUBY_ASSERT(RB_TYPE_P(obj, T_DATA));
|
||||||
|
RUBY_ASSERT(rb_typeddata_inherited_p(RTYPEDDATA_TYPE(obj), &managed_id_table_type));
|
||||||
|
|
||||||
return RTYPEDDATA_GET_DATA(obj);
|
return RTYPEDDATA_GET_DATA(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -381,12 +384,9 @@ managed_id_table_dup_i(ID id, VALUE val, void *data)
|
||||||
VALUE
|
VALUE
|
||||||
rb_managed_id_table_dup(VALUE old_table)
|
rb_managed_id_table_dup(VALUE old_table)
|
||||||
{
|
{
|
||||||
RUBY_ASSERT(RB_TYPE_P(old_table, T_DATA));
|
|
||||||
RUBY_ASSERT(rb_typeddata_inherited_p(RTYPEDDATA_TYPE(old_table), &managed_id_table_type));
|
|
||||||
|
|
||||||
struct rb_id_table *new_tbl;
|
struct rb_id_table *new_tbl;
|
||||||
VALUE obj = TypedData_Make_Struct(0, struct rb_id_table, &managed_id_table_type, new_tbl);
|
VALUE obj = TypedData_Make_Struct(0, struct rb_id_table, &managed_id_table_type, new_tbl);
|
||||||
struct rb_id_table *old_tbl = RTYPEDDATA_GET_DATA(old_table);
|
struct rb_id_table *old_tbl = managed_id_table_ptr(old_table);
|
||||||
rb_id_table_init(new_tbl, old_tbl->num + 1);
|
rb_id_table_init(new_tbl, old_tbl->num + 1);
|
||||||
rb_id_table_foreach(old_tbl, managed_id_table_dup_i, new_tbl);
|
rb_id_table_foreach(old_tbl, managed_id_table_dup_i, new_tbl);
|
||||||
return obj;
|
return obj;
|
||||||
|
@ -395,35 +395,23 @@ rb_managed_id_table_dup(VALUE old_table)
|
||||||
int
|
int
|
||||||
rb_managed_id_table_lookup(VALUE table, ID id, VALUE *valp)
|
rb_managed_id_table_lookup(VALUE table, ID id, VALUE *valp)
|
||||||
{
|
{
|
||||||
RUBY_ASSERT(RB_TYPE_P(table, T_DATA));
|
return rb_id_table_lookup(managed_id_table_ptr(table), id, valp);
|
||||||
RUBY_ASSERT(rb_typeddata_inherited_p(RTYPEDDATA_TYPE(table), &managed_id_table_type));
|
|
||||||
|
|
||||||
return rb_id_table_lookup(RTYPEDDATA_GET_DATA(table), id, valp);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
rb_managed_id_table_insert(VALUE table, ID id, VALUE val)
|
rb_managed_id_table_insert(VALUE table, ID id, VALUE val)
|
||||||
{
|
{
|
||||||
RUBY_ASSERT(RB_TYPE_P(table, T_DATA));
|
return rb_id_table_insert(managed_id_table_ptr(table), id, val);
|
||||||
RUBY_ASSERT(rb_typeddata_inherited_p(RTYPEDDATA_TYPE(table), &managed_id_table_type));
|
|
||||||
|
|
||||||
return rb_id_table_insert(RTYPEDDATA_GET_DATA(table), id, val);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t
|
size_t
|
||||||
rb_managed_id_table_size(VALUE table)
|
rb_managed_id_table_size(VALUE table)
|
||||||
{
|
{
|
||||||
RUBY_ASSERT(RB_TYPE_P(table, T_DATA));
|
return rb_id_table_size(managed_id_table_ptr(table));
|
||||||
RUBY_ASSERT(rb_typeddata_inherited_p(RTYPEDDATA_TYPE(table), &managed_id_table_type));
|
|
||||||
|
|
||||||
return rb_id_table_size(RTYPEDDATA_GET_DATA(table));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
rb_managed_id_table_foreach(VALUE table, rb_id_table_foreach_func_t *func, void *data)
|
rb_managed_id_table_foreach(VALUE table, rb_id_table_foreach_func_t *func, void *data)
|
||||||
{
|
{
|
||||||
RUBY_ASSERT(RB_TYPE_P(table, T_DATA));
|
rb_id_table_foreach(managed_id_table_ptr(table), func, data);
|
||||||
RUBY_ASSERT(rb_typeddata_inherited_p(RTYPEDDATA_TYPE(table), &managed_id_table_type));
|
|
||||||
|
|
||||||
rb_id_table_foreach(RTYPEDDATA_GET_DATA(table), func, data);
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue