Movatterモバイル変換


[0]ホーム

URL:


HomeClassesMethods

In Files

  • gc.c

Parent

Object

Methods

Included Modules

Files

Class/Module Index[+]

Quicksearch
No matching classes.

ObjectSpace::WeakMap

AnObjectSpace::WeakMap object holds referencesto any objects, but those objects can get garbage collected.

This class is mostly used internally by WeakRef, please uselib/weakref.rb for the public interface.

Public Instance Methods

[](p1)click to toggle source

Retrieves a weakly referenced object with the given key

                static VALUEwmap_aref(VALUE self, VALUE key){    VALUE obj = wmap_lookup(self, key);    return obj != Qundef ? obj : Qnil;}
[]=(p1, p2)click to toggle source

Creates a weak reference from the given key to the given value

                static VALUEwmap_aset(VALUE self, VALUE key, VALUE value){    struct weakmap *w;    TypedData_Get_Struct(self, struct weakmap, &weakmap_type, w);    if (FL_ABLE(value)) {        define_final0(value, w->final);    }    if (FL_ABLE(key)) {        define_final0(key, w->final);    }    st_update(w->obj2wmap, (st_data_t)value, wmap_aset_update, key);    st_insert(w->wmap2obj, (st_data_t)key, (st_data_t)value);    return nonspecial_obj_id(value);}
each()click to toggle source

Iterates over keys and objects in a weakly referenced object

                static VALUEwmap_each(VALUE self){    struct weakmap *w;    rb_objspace_t *objspace = &rb_objspace;    TypedData_Get_Struct(self, struct weakmap, &weakmap_type, w);    st_foreach(w->wmap2obj, wmap_each_i, (st_data_t)objspace);    return self;}
each_key()click to toggle source

Iterates over keys and objects in a weakly referenced object

                static VALUEwmap_each_key(VALUE self){    struct weakmap *w;    rb_objspace_t *objspace = &rb_objspace;    TypedData_Get_Struct(self, struct weakmap, &weakmap_type, w);    st_foreach(w->wmap2obj, wmap_each_key_i, (st_data_t)objspace);    return self;}
each_pair()click to toggle source

Iterates over keys and objects in a weakly referenced object

                static VALUEwmap_each(VALUE self){    struct weakmap *w;    rb_objspace_t *objspace = &rb_objspace;    TypedData_Get_Struct(self, struct weakmap, &weakmap_type, w);    st_foreach(w->wmap2obj, wmap_each_i, (st_data_t)objspace);    return self;}
each_value()click to toggle source

Iterates over keys and objects in a weakly referenced object

                static VALUEwmap_each_value(VALUE self){    struct weakmap *w;    rb_objspace_t *objspace = &rb_objspace;    TypedData_Get_Struct(self, struct weakmap, &weakmap_type, w);    st_foreach(w->wmap2obj, wmap_each_value_i, (st_data_t)objspace);    return self;}
include?(p1)click to toggle source

Returnstrue ifkey is registered

                static VALUEwmap_has_key(VALUE self, VALUE key){    return wmap_lookup(self, key) == Qundef ? Qfalse : Qtrue;}
inspect()click to toggle source
                static VALUEwmap_inspect(VALUE self){    VALUE str;    VALUE c = rb_class_name(CLASS_OF(self));    struct weakmap *w;    TypedData_Get_Struct(self, struct weakmap, &weakmap_type, w);    str = rb_sprintf("-<%"PRIsVALUE":%p", c, (void *)self);    if (w->wmap2obj) {        st_foreach(w->wmap2obj, wmap_inspect_i, str);    }    RSTRING_PTR(str)[0] = '#';    rb_str_cat2(str, ">");    return str;}
key?(p1)click to toggle source

Returnstrue ifkey is registered

                static VALUEwmap_has_key(VALUE self, VALUE key){    return wmap_lookup(self, key) == Qundef ? Qfalse : Qtrue;}
keys()click to toggle source

Iterates over keys and objects in a weakly referenced object

                static VALUEwmap_keys(VALUE self){    struct weakmap *w;    struct wmap_iter_arg args;    TypedData_Get_Struct(self, struct weakmap, &weakmap_type, w);    args.objspace = &rb_objspace;    args.value = rb_ary_new();    st_foreach(w->wmap2obj, wmap_keys_i, (st_data_t)&args);    return args.value;}
length()click to toggle source

Returns the number of referenced objects

                static VALUEwmap_size(VALUE self){    struct weakmap *w;    st_index_t n;    TypedData_Get_Struct(self, struct weakmap, &weakmap_type, w);    n = w->wmap2obj->num_entries;#if SIZEOF_ST_INDEX_T <= SIZEOF_LONG    return ULONG2NUM(n);#else    return ULL2NUM(n);#endif}
member?(p1)click to toggle source

Returnstrue ifkey is registered

                static VALUEwmap_has_key(VALUE self, VALUE key){    return wmap_lookup(self, key) == Qundef ? Qfalse : Qtrue;}
size()click to toggle source

Returns the number of referenced objects

                static VALUEwmap_size(VALUE self){    struct weakmap *w;    st_index_t n;    TypedData_Get_Struct(self, struct weakmap, &weakmap_type, w);    n = w->wmap2obj->num_entries;#if SIZEOF_ST_INDEX_T <= SIZEOF_LONG    return ULONG2NUM(n);#else    return ULL2NUM(n);#endif}
values()click to toggle source

Iterates over values and objects in a weakly referenced object

                static VALUEwmap_values(VALUE self){    struct weakmap *w;    struct wmap_iter_arg args;    TypedData_Get_Struct(self, struct weakmap, &weakmap_type, w);    args.objspace = &rb_objspace;    args.value = rb_ary_new();    st_foreach(w->wmap2obj, wmap_values_i, (st_data_t)&args);    return args.value;}

This page was generated for Ruby 3.0.0

Generated with Ruby-doc Rdoc Generator 0.42.0.


[8]ページ先頭

©2009-2025 Movatter.jp